diff options
Diffstat (limited to 'Stoichiometry_And_Process_Calculations')
15 files changed, 10542 insertions, 0 deletions
diff --git a/Stoichiometry_And_Process_Calculations/README.txt b/Stoichiometry_And_Process_Calculations/README.txt new file mode 100755 index 00000000..511b05a9 --- /dev/null +++ b/Stoichiometry_And_Process_Calculations/README.txt @@ -0,0 +1,10 @@ +Contributed By: dolar khachariya +Course: mtech +College/Institute/Organization: IIT Bombay +Department/Designation: Electrical Eng. Dept. +Book Title: Stoichiometry And Process Calculations +Author: K. V. Narayanan And B. Lakshmikutty +Publisher: Prentice Hall Of India, New Delhi +Year of publication: 2006 +Isbn: 81-203-2992-9 +Edition: 1
\ No newline at end of file diff --git a/Stoichiometry_And_Process_Calculations/ch10.ipynb b/Stoichiometry_And_Process_Calculations/ch10.ipynb new file mode 100755 index 00000000..c2e5a2de --- /dev/null +++ b/Stoichiometry_And_Process_Calculations/ch10.ipynb @@ -0,0 +1,1480 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "Chapter 10 : Material Balance with Chemical Reaction" + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 10.1 pageno : 329" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# variables \n", + "mair = 500. #kg\n", + "mCO2 = 55. #kg\n", + "mCO = 15. #kg\n", + "\n", + "#C3H8 + 5O2 = 3CO2 + 4H20\n", + "MCO2 = 44 \n", + "MCO = 28 \n", + "\n", + "# Calculation \n", + "NCO2 = mCO2 / MCO2 \n", + "NCO = mCO / MCO \n", + "Mair = 29 \n", + "Nair = mair / Mair \n", + "#carbon balance gives,\n", + "F = (NCO2 + NCO)/3 \n", + "MC3H8 = 44.064 \n", + "mC3H8 = MC3H8 * F \n", + "\n", + "# Result\n", + "print \"(a)mass of propane burnt = %.2f\"%mC3H8,\"kg\"\n", + "\n", + "#one mole of propane requres 5 moles of oxygen for combustion\n", + "NO2 = F * 5 \n", + "Nairt = NO2 * 100 /21. #theoretical air required\n", + "Pexcess = (Nair - Nairt) * 100 / Nairt \n", + "print \"(b)The percent excess air = %.2f\"%Pexcess,\"%\"\n", + "\n", + "#C3H8 + 7/2 * O2 = 3CO + 4H2O\n", + "NH2O = F * 4 \n", + "#Taking oxygen balance, unburned oxygen is calculated,\n", + "#O2 supplied = O2 present in form of CO2, CO and H2O + unburned O2\n", + "Nunburnt = Nair * 21. / 100 - NCO2 - NCO/2 - NH2O/2. \n", + "NN2 = Nair * 79 / 100. \n", + "Ntotal = NCO2 + NCO + NH2O + NN2 + Nunburnt \n", + "PCO2 = NCO2 * 100 / Ntotal \n", + "PCO = NCO *100/ Ntotal \n", + "PH2O = NH2O *100/ Ntotal \n", + "PN2 = NN2 *100/ Ntotal \n", + "PO2 = Nunburnt *100 / Ntotal \n", + "\n", + "print \"(c)Percent composition of CO2 = %.2f\"%PCO2,\"%\"\n", + "print \"Percent composition of CO = %.2f\"%PCO,\"%\"\n", + "print \"Percent composition of H2O = %.2f\"%PH2O,\"%\"\n", + "print \"Percent composition of N2 = %.2f\"%PN2,\"%\"\n", + "print \"Percent composition of O2 = %.2f\"%PO2,\"%\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)mass of propane burnt = 26.23 kg\n", + "(b)The percent excess air = 21.66 %\n", + "(c)Percent composition of CO2 = 6.68 %\n", + "Percent composition of CO = 2.86 %\n", + "Percent composition of H2O = 12.73 %\n", + "Percent composition of N2 = 72.84 %\n", + "Percent composition of O2 = 4.88 %\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 10.2 pageno : 331" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# variables \n", + "Nflue = 100. #kmol\n", + "NCO2 = 14.84 \n", + "NCO = 1.65 \n", + "NO2 = 5.16 \n", + "NN2 = 78.35 \n", + "PCF = 85. #PERCENT CARBON IN FEED\n", + "PIF = 15. #PERCENT INERT IN FEED\n", + "\n", + "# Calculation \n", + "#F - amount of coke charged, W - mass of coke left,W = 0.05F\n", + "NCflue = NCO2 + NCO \n", + "MC = 12. \n", + "mC = MC * NCflue \n", + "\n", + "#carbon balance gives, F * PCF / 100 = W * PCF + mC \n", + "F = mC / ( PCF / 100 - 0.05*PCF / 100) \n", + "#let A kmol air supplied, taking N2 balance,\n", + "Nair = NN2 * 100/79. \n", + "NO2supplied = Nair - NN2 \n", + "Ntheoretical = F * PCF / (100 * MC) \n", + "Pexcess = ( NO2supplied - Ntheoretical ) * 100 / ( Ntheoretical ) \n", + "\n", + "# Result\n", + "print \"(a)Percentage excess air = %.2f\"%Pexcess,\"%\"\n", + "mair = Nair * 29 \n", + "m = mair / F #air supplied per kg of coke charged\n", + "print \"(b)air supplied per kg of coke charged = %.2f\"%m,\"kg\"\n", + "P = 100. #kPa\n", + "T = 500. #K\n", + "V = Nflue *22.4143*101.325 * T / (F * P * 273.15) \n", + "print \"(c)volume of flue gas per kg of coke = %.2f\"%V,\"m**3\"\n", + "W = 0.05*F \n", + "mCr = W * PCF/100. #carbon in refuse\n", + "mir = F * (1-PCF/100.) #inert in refuse\n", + "mr = mCr + mir \n", + "C = mCr * 100 / mr \n", + "I = mir *100/ mr \n", + "print \"(d)Carbon = %.2f\"%C,\"%\"\n", + "print \"Inert = %.2f\"%I,\"%\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Percentage excess air = 19.99 %\n", + "(b)air supplied per kg of coke charged = 11.74 kg\n", + "(c)volume of flue gas per kg of coke = 16.96 m**3\n", + "(d)Carbon = 22.08 %\n", + "Inert = 77.92 %\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 10.3 pageno : 333" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# variables \n", + "Nflue = 100. #kmol\n", + "NCO2 = 9. \n", + "NCO = 2. \n", + "NO2 = 3. \n", + "NN2 = 86. \n", + "NCflue = NCO2 + NCO \n", + "MC = 12. \n", + "mC = MC * NCflue \n", + "\n", + "# Calculation \n", + "#let A kmol air supplied, taking N2 balance,\n", + "Nair = NN2 * 100/79. \n", + "NO2supplied = Nair - NN2 \n", + "\n", + "# if CO in the flue gas was to be completely converted to CO2, \n", + "#then, the moles of oxygen present in the flue gas would be 3-1 =2kmol\n", + "Noexcess = NO2 - NCO/2. \n", + "Pexcess = Noexcess * 100. / ( NO2supplied - Noexcess) \n", + "\n", + "# Result\n", + "print \"(a)Percentage excess air = %.2f\"%Pexcess,\"%\"\n", + "NwaterO = NO2supplied - NCO2 - NCO/2 - NO2 \n", + "NH2 = NwaterO*2 \n", + "mH2 = NH2 * 2 \n", + "xCF = 0.7\n", + "R = mC / mH2 \n", + "print \"(b)Ratio of carbon to hydrogen in the fuel = %.2f\"%R\n", + "#let x be the amount of moisture in the feed, n it is \n", + "#given that 70% is carbon,therefore,\n", + "#0.7 = 3.32 / ( 1 + 3.32 + x )\n", + "x = R / xCF - 1 - R \n", + "mH = x * 2.016 / 18.016 \n", + "mHtotal = mH + mH2 \n", + "Rtotal = mC / mHtotal \n", + "print \"(c)Ratio of carbon to total hydrogen in the fuel = %.2f\"%Rtotal\n", + "ntotal = R + 1 +x \n", + "PH2 = 1*100./ntotal \n", + "PH2O = x * 100. / ntotal \n", + "print \"(d)percentage of combustible hydrogen in the fuel = %.2f\"%PH2,\"%\"\n", + "print \"percentage of moisture in the fuel = %.2f\"%PH2O,\"%\"\n", + "nH2Ototal = (PH2O + PH2 * 18.016 / 2.016)/100 \n", + "print \"(e)The mass of moisture in the flue gas per kg of fuel burned = %.3f\"%nH2Ototal,\"kg\"\n", + "\n", + "# note : answer may vary because of rounding error\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Percentage excess air = 9.59 %\n", + "(b)Ratio of carbon to hydrogen in the fuel = 3.35\n", + "(c)Ratio of carbon to total hydrogen in the fuel = 3.34\n", + "(d)percentage of combustible hydrogen in the fuel = 20.92 %\n", + "percentage of moisture in the fuel = 9.08 %\n", + "(e)The mass of moisture in the flue gas per kg of fuel burned = 1.960 kg\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 10.4 pageno : 335" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# variables \n", + "Nflue = 100. #kmoles\n", + "NCO2 = 9.05 \n", + "NCO = 1.34 \n", + "NO2 = 9.98 \n", + "NN2 = 79.63 \n", + "PCO2F = 9.2 #% ( Feed )\n", + "PCOF = 21.3 #%\n", + "PH2F = 18. #%\n", + "PCH4F = 2.5 #%\n", + "PN2F = 49. #%\n", + "\n", + "\n", + "# Calculation \n", + "#Taking carbon balance, \n", + "F = (NCO2 + NCO )/ ( (PCO2F + PCOF + PCH4F)/100.) \n", + "\n", + "#Nitrogen balance gives,\n", + "Nair = (NN2 - F*PN2F/(100) )* 100 / 79. \n", + "R = Nair/F \n", + "\n", + "# Result\n", + "print \"(a)molar Ratio of air to fuel = %.2f\"%R\n", + "Oexcess = NO2 - NCO / 2 \n", + "Pexcess = Oexcess *100/ (Nair*21./100 - Oexcess) \n", + "print \"(b)Percent excess of air = %d\"%Pexcess,\"%\"\n", + "NN2F = F * PN2F / 100 \n", + "PN2F = NN2F *100/ NN2 \n", + "print \"(c)Percent of nitrogen in the flue gas that came from fuel = %.2f\"%PN2F,\"%\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)molar Ratio of air to fuel = 2.58\n", + "(b)Percent excess of air = 120 %\n", + "(c)Percent of nitrogen in the flue gas that came from fuel = 19.37 %\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 10.5 pageno : 337" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# variables \n", + "Nflue = 100. #kmole\n", + "NCO2 = 16.4 \n", + "NCO = 0.4 \n", + "NO2 = 2.3 \n", + "NN2 = 80.9 \n", + "PCF = 80.5 #% ( Feed )\n", + "PO = 5.0 #%\n", + "PHF = 4.6 #%\n", + "PN = 1.1 #%\n", + "Pash = 8.8 #%\n", + "\n", + "# Calculation \n", + "#Taking Carbon balance,\n", + "W = (NCO2 + NCO)*12. / (PCF / 100) \n", + "mCO2 = NCO2 * 44 \n", + "mCO = NCO * 32 \n", + "mO2 = NO2 * 28 \n", + "mN2 = NN2 * 28.014 \n", + "mtotal = mCO2 + mCO + mO2 + mN2 \n", + "Mdryflue = mtotal * 100/ W \n", + "\n", + "# Result\n", + "print \"(a)The weight of dry gaseous products formed per 100 kg of coal fired = %.2f\"%Mdryflue,\"kg\"\n", + "#taking nitrogen balance,\n", + "x = (mN2 - W*PN/100)/28.014 \n", + "Noxygen = x * 21 / 79. \n", + "Nrequired = W * (PCF /12 + PHF/(2*2.016) - PO/32)/100 \n", + "Pexcess = (Noxygen - Nrequired)*100/Nrequired \n", + "print \"(b)Percent excess air supplied for combustion = %.2f\"%Pexcess,\"%\"\n", + "\n", + "\n", + "# note: answer may vary because of rounding error." + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)The weight of dry gaseous products formed per 100 kg of coal fired = 1223.92 kg\n", + "(b)Percent excess air supplied for combustion = 11.49 %\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 10.6 pageno : 338" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# variables \n", + "mcoal = 100. #kg\n", + "mC = 63. #kg\n", + "mH = 12. #kg\n", + "mO = 16. #kg\n", + "mash = 9. #kg\n", + "mfixC = 39. #kg\n", + "mH2O = 10. #kg\n", + "\n", + "# Calculation \n", + "mCvolatile = mC - mfixC \n", + "mHH2O = mH2O *2.016/18.016 #(mass of hydrogen in moisture)\n", + "mHvolatile = mH - mHH2O \n", + "mOH2O = mH2O - mHH2O \n", + "mOvolatile = mO - mOH2O \n", + "mtvolatile = mCvolatile + mHvolatile + mOvolatile \n", + "PC = mCvolatile * 100 / mtvolatile \n", + "PH = mHvolatile * 100 / mtvolatile \n", + "PO = mOvolatile * 100 / mtvolatile \n", + "\n", + "# Result\n", + "print \"(a)percent carbon in volatile matter = %.2f\"%PC,\"%\"\n", + "print \" percent hydrogen in volatile matter = %.2f\"%PH,\"%\"\n", + "print \" percent oxygen in volatile matter = %.2f\"%PO,\"%\"\n", + "\n", + "PCflue = 10.8 #%\n", + "Pvflue = 9.0 #%\n", + "Pashflue = 80.2 #%\n", + "\n", + "#taking ash balance, Wis the weight of the refuse,\n", + "W = mash *100. / Pashflue \n", + "mvflue = Pvflue * W /100. \n", + "mCflue = W * PCflue / 100 \n", + "Ctflue = mCflue + mvflue * PC / 100 #total carbon in flue\n", + "Htflue = mvflue * PH / 100 \n", + "Otflue = mvflue * PO / 100 \n", + "PCflue = Ctflue *100/W \n", + "PHflue = Htflue *100/W \n", + "POflue = Otflue *100/W \n", + "\n", + "print \"(b)percent Carbon in refuse = %.2f\"%PCflue,\"%\"\n", + "print \" percent Hydrogen in refuse = %.2f\"%PHflue,\"%\"\n", + "print \" percent Oxygen in refuse = %.2f\"%POflue,\"%\"\n", + "print \" percent Ash in refuse = %.2f\"%Pashflue,\"%\"\n", + "\n", + "Coalburnt = mcoal - W \n", + "NCburnt = (mC - Ctflue)/12 \n", + "NHburnt = (mH - Htflue)/2.016 \n", + "NOburnt = (mO - Otflue)/32 \n", + "PCO2 = 80. #Percentage of carbon burnt\n", + "NCO2 = PCO2 * NCburnt / 100. \n", + "NCO = ( 1 - PCO2/100. )*NCburnt \n", + "Vair = 1000. #m**3\n", + "Nair = Vair / 22.4143 \n", + "NN2 = Nair * 79 / 100. \n", + "NO2 = Nair * 21 / 100. \n", + "Ocompounds = NCO2 + NCO/2 + NHburnt/2 #Oxygen present in CO2,CO and H2O\n", + "\n", + "#Oxygen balance gives free oxygen as,\n", + "Ofree = NO2 + mO/32 - Otflue/32 - Ocompounds \n", + "Ntotal = NN2 + Ofree + NCO2 + NCO #dry basis\n", + "PCO21 = NCO2 *100/Ntotal \n", + "PCO1 = NCO * 100/Ntotal \n", + "PO21 = Ofree * 100/Ntotal \n", + "PN21 = NN2 * 100/Ntotal \n", + "print \"(c)percent CO2 in flue = %.2f\"%PCO21,\"%\"\n", + "print \" percent CO in flue = %.2f\"%PCO1,\"%\"\n", + "print \" percent O2 in flue = %.2f\"%PO21,\"%\"\n", + "print \" percent N2 in flue = %.2f\"%PN21,\"%\"\n", + "NOrequired = mC/12 + mH/(2.016*2) - mO/32 \n", + "Oexcess = NO2 - NOrequired \n", + "Pexcess = Oexcess * 100 / NOrequired \n", + "print \"(d)Percent excess air supplied = %.2f\"%Pexcess,\"%\"\n", + "NH2Oflue = NHburnt \n", + "mH2O = NH2Oflue * 18.016 \n", + "m = mH2O * 100/Ntotal \n", + "print \"(e)mass of water vapour per 100 moles of dry flue gas = %.2f\"%\\\n", + "m,\"g water vapour / 100kmol dry flue gas\"\n", + "\n", + "# note: answer may vary because of rounding error." + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)percent carbon in volatile matter = 57.14 %\n", + " percent hydrogen in volatile matter = 25.91 %\n", + " percent oxygen in volatile matter = 16.95 %\n", + "(b)percent Carbon in refuse = 15.94 %\n", + " percent Hydrogen in refuse = 2.33 %\n", + " percent Oxygen in refuse = 1.53 %\n", + " percent Ash in refuse = 80.20 %\n", + "(c)percent CO2 in flue = 9.55 %\n", + " percent CO in flue = 2.39 %\n", + " percent O2 in flue = 5.53 %\n", + " percent N2 in flue = 82.53 %\n", + "(d)Percent excess air supplied = 21.26 %\n", + "(e)mass of water vapour per 100 moles of dry flue gas = 245.62 g water vapour / 100kmol dry flue gas\n" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 10.7 pageno : 343" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# variables \n", + "Pexcess = 20. #%\n", + "PSO3 = 5. #% ( Percent of sulphur burnt to SO3 )\n", + "\n", + "#S + O2 = SO2\n", + "N = 1. #kmol sulphur\n", + "Orequired = N #kmol\n", + "\n", + "# Calculation \n", + "Osupplied = Orequired * ( 1 + Pexcess/100) \n", + "Nsupplied = Osupplied * 79/21. \n", + "NSO2 = (1-PSO3/100)*N \n", + "NSO3 = PSO3 * N /100. \n", + "Oconsumed = NSO2 + 3/2. * PSO3/100 \n", + "Oremaining = Osupplied - Oconsumed \n", + "Ntotal = NSO2 + NSO3 + Oremaining + Nsupplied \n", + "PSO2 = NSO2 * 100 / Ntotal \n", + "PSO3 = NSO3 * 100 / Ntotal \n", + "PO2 = Oremaining * 100 / Ntotal \n", + "PN2 = Nsupplied * 100 / Ntotal \n", + "\n", + "# Result\n", + "print \"Percent SO2 in burner gas = %.2f\"%PSO2,\"%\"\n", + "print \"Percent SO3 in burner gas = %.2f\"%PSO3,\"%\"\n", + "print \"Percent O2 in burner gas = %.2f\"%PO2,\"%\"\n", + "print \"Percent N2 in burner gas = %.2f\"%PN2,\"%\"\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Percent SO2 in burner gas = 16.70 %\n", + "Percent SO3 in burner gas = 0.88 %\n", + "Percent O2 in burner gas = 3.08 %\n", + "Percent N2 in burner gas = 79.35 %\n" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 10.8 pageno : 343" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# variables \n", + "Nburner = 100. #kmol\n", + "NSO2b = 9.5 #kmol\n", + "NO2b = 7. #kmol\n", + "\n", + "# Calculation \n", + "NN2 = Nburner - NSO2b - NO2b \n", + "NOsupplied = NN2 * 21 / 79. #Oxygen supplied\n", + "\n", + "#4FeS2 + 11O2 = 2Fe2O3 + 8SO2\n", + "#4FeS2 + 15O2 = 2Fe2O3 + 8SO3\n", + "NOtotal = NO2b + NSO2b + NSO2b * 3 / 8. \n", + "NOunaccounted = NOsupplied - NOtotal \n", + "NSO31 = NOunaccounted * 8 /15 \n", + "NStotal = NSO2b + NSO31 \n", + "mS = NStotal * 32.064 \n", + "Pburnt = 50. #% ( percentage of pyrites burnt )\n", + "mFeS2 = mS * 100/ Pburnt \n", + "\n", + "# Result\n", + "print \"(a)Total pyrites burnt = %.2f\"%mFeS2,\"kg\"\n", + "NFeS2 = NStotal / 2 \n", + "MFeS2 = 119.975 \n", + "mFeS21 = MFeS2 * NFeS2 \n", + "mgangue = mFeS2 - mFeS21 \n", + "NFe2O3 = NFeS2 * Pburnt / 100 \n", + "MFe2O3 = 159.694 \n", + "mFe2O3 = MFe2O3 * NFe2O3 \n", + "PSO3c = 2.5 #% ( percentage sulphur as SO3 in cinder )\n", + "mc = 100. #kg ( basis )\n", + "NSO3 = PSO3c / 32.064 \n", + "mSO3 = NSO3 * 80.064 \n", + "mremaining = mc - mSO3 # ( Fe2O3 + gangue )\n", + "\n", + "#x be the weight of the cinder \n", + "x = (mFe2O3 + mgangue)*100/mremaining \n", + "print \"(b)weight of cinder produced = %.f\"%x,\"kg\"\n", + "Slost = x * NSO3 / 100 \n", + "PSlost = Slost *100/ NStotal \n", + "print \"(c)Percent of total S lost in the cinder = %.2f\"%PSlost,\"%\"\n", + "mSO3c = mSO3 * x / 100 \n", + "NSO3b = NSO31 - Slost \n", + "P = NSO3b * 100 / NStotal \n", + "print \"(d)Percentage of S charged that is present as SO3 in the burner gas = %.2f\"%P,\"%\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Total pyrites burnt = 682.19 kg\n", + "(b)weight of cinder produced = 500 kg\n", + "(c)Percent of total S lost in the cinder = 3.66 %\n", + "(d)Percentage of S charged that is present as SO3 in the burner gas = 7.03 %\n" + ] + } + ], + "prompt_number": 9 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 10.9 pageno : 345" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# variables \n", + "Ncgas = 100. #kmol ( basis - SO3 free converter gas )\n", + "NSO2 = 4.5 #kmol\n", + "NO2 = 7.5 #kmol\n", + "NN2 = 88.0 #kmol\n", + "\n", + "\n", + "# Calculation \n", + "NOsupplied = NN2 * 21./ 79 \n", + "NOconverter = NO2 + NSO2 \n", + "NOconsumed = NOsupplied - NOconverter #(Oxygen consumed for SO3)\n", + "NSO3c = NOconsumed / 1.5 \n", + "NStotal = NSO3c + NSO2 \n", + "Nbgas = 100. #kmol ( basis - SO3 free burner gas )\n", + "NSO21 = 15. #%\n", + "NO21 = 5. #%\n", + "NN21 = 80. #%\n", + "NOburner = NO21 + NSO21 \n", + "NOsupplied1 = NN21 * 21. / 79. \n", + "NOconsumed1 = NOsupplied1 - NOburner #(Oxygen consumed for SO3)\n", + "NSO3b = NOconsumed1 / 1.5 \n", + "NStotal1 = NSO3b + NSO21 \n", + "mS = 100. #kg ( basis - sulphur charged )\n", + "Pburned = 95. #%\n", + "mburned = mS * Pburned / 100. \n", + "Nburned = mburned / 32.064 \n", + "\n", + "#let x be the SO3 free burner gas produced, then sulphur balance gives,\n", + "x = Nburned * Nbgas / NStotal1 \n", + "NSO2b = NSO21 * x / 100 \n", + "NO2b = NO21 * x / 100 \n", + "NN2b = NN21 * x / 100 \n", + "Ntotalb = NSO2b + NO2b + NN2b \n", + "NSO3b1 = NSO3b * x / 100 \n", + "\n", + "#let y be the no. of converter gas produced\n", + "y = Nburned * Ncgas / NStotal \n", + "NSO2c = NSO2 * y / 100 \n", + "NO2c = NO2 * y / 100 \n", + "NN2c = NN2 * y / 100 \n", + "Ntotalc = NSO2c + NO2c + NN2c \n", + "NSO3c1 = NSO3c * y / 100 \n", + "Nairsec = (NN2c - NN2b ) * 100 / 79. \n", + "P = 100. #kPa\n", + "T = 300. #K\n", + "V = Nairsec * 22.414 * 101.3 * T / (P * 273.15) \n", + "\n", + "# Result\n", + "print \"(a)The volume of secondary air at 100kPa and 300K = %.1f\"%V,\"m**3/h\"\n", + "NSabsorbed = 95. #%\n", + "mSO3abs = NSabsorbed * NSO3c1 * 80.064 / 100 \n", + "\n", + "#let z be the amount of 98% H2SO4, therefore , 100% H2SO4 produced = z + mSO3abs\n", + "# taking SO3 balance\n", + "z = (mSO3abs - mSO3abs * 80.064 / 98.08) / ( 80.064 / 98.08 - 0.98 * 80.064/98.08) \n", + "print \"(b)98%% H2SO4 required per hour = %.1f\"%z,\"kg\"\n", + "w = z + mSO3abs \n", + "print \"(c)100%% H2SO4 produced per hour = %.1f\"%w,\"kg\"\n", + "\n", + "# note: answer may vary because of rounding error\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)The volume of secondary air at 100kPa and 300K = 208.2 m**3/h\n", + "(b)98% H2SO4 required per hour = 1592.1 kg\n", + "(c)100% H2SO4 produced per hour = 1733.6 kg\n" + ] + } + ], + "prompt_number": 11 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 10.10 pageno : 349" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# variables \n", + "mlime = 5. #kg\n", + "mcoke = 1. #kg\n", + "PCaCO3l = 84.5 #%\n", + "PMgCO3l = 11.5 #%\n", + "\n", + "# Calculation \n", + "NCaCO3l = PCaCO3l * mlime / (100.09*100) \n", + "NMgCO3l = PMgCO3l * mlime / (84.312*100) \n", + "mInertsl = mlime * ( 100 - PCaCO3l - PMgCO3l ) / 100 \n", + "PCc = 76. #%\n", + "Pashc = 21. #%\n", + "Pwaterc = 3. #%\n", + "NCc = mcoke * PCc /(100*12) \n", + "Nwaterc = mcoke * Pwaterc / ( 100 * 18.016 ) \n", + "mash = Pashc * mcoke / 100 \n", + "\n", + "#CaCO3 + C + O2 = CaO + 2CO2\n", + "#MgCO3 + C + O2 = MgO + 2CO2\n", + "PCaCO3conv = 95. #(Percent calcination of CaCO3)\n", + "PMgCO3conv = 90. #(Percent calcination of MgCO3)\n", + "NCaO = PCaCO3conv * NCaCO3l / 100. \n", + "mCaO = NCaO * 56.08 \n", + "NMgO = PMgCO3conv * NMgCO3l / 100. \n", + "mMgO = NMgO * 40.312 \n", + "mCaCO3 = (NCaCO3l * (1-PCaCO3conv/100)*100.09) \n", + "mMgCO3 = (NMgCO3l * (1-PMgCO3conv/100)*84.312) \n", + "mtotal = mCaO + mMgO + mCaCO3 + mMgCO3 + mInertsl + mash \n", + "PCaO = mCaO * 100 / mtotal \n", + "\n", + "# Result\n", + "print \"The weight percent of CaO in the product leaving the kiln = %.2f\"%PCaO,\"%\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The weight percent of CaO in the product leaving the kiln = 70.83 %\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 10.11 pageno : 350" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# variables \n", + "R = 100. #kg ( basis - residue )\n", + "MCaSO4 = 136.144 \n", + "MMgSO4 = 120.376 \n", + "mCaSO4r = 9. #kg\n", + "mMgSO4r = 5. #kg\n", + "mH2SO4r = 1.2 #kg\n", + "minertr = 0.5 #kg\n", + "mCO2r = 0.2 #kg\n", + "mH2O = 84.10 #kg\n", + "\n", + "\n", + "# Calculation \n", + "NCaSO4 = mCaSO4r / MCaSO4 \n", + "NMgSO4 = mMgSO4r / MMgSO4 \n", + "\n", + "#CaCO3 + H2SO4 = CaSO4 + H2O + CO2\n", + "#MgSO4 + H2SO4 = MgSO4 + H2O + CO2\n", + "\n", + "mCaCO3 = NCaSO4 * 100.08 \n", + "mMgCO3 = NMgSO4 * 84.312 \n", + "mtotallime = minertr + mCaCO3 + mMgCO3 \n", + "PCaCO3 = mCaCO3 * 100/ mtotallime \n", + "PMgCO3 = mMgCO3 *100/ mtotallime \n", + "Pinerts = minertr *100/ mtotallime \n", + "\n", + "# Result\n", + "print \"(a)Percentage of CaCO3 in limestone = %.2f\"%PCaCO3,\"%\"\n", + "print \" Percentage of MgCO3 in limestone = %.2f\"%PMgCO3,\"%\"\n", + "print \" Percentage of inerts in limestone = %.2f\"%Pinerts,\"%\"\n", + "\n", + "NH2SO4 = NCaSO4 + NMgSO4 \n", + "mH2SO4 = NH2SO4 * 98.08 \n", + "Pexcess = mH2SO4r * 100 / ( mH2SO4) \n", + "print \"(b)The percentage excess of acid used = %.2f\"%Pexcess,\"%\"\n", + "\n", + "macidt = mH2SO4 + mH2SO4r \n", + "Pacidic = 12. #%\n", + "mwaterin = macidt * (100 - Pacidic)/ Pacidic \n", + "mwaterr = (NCaSO4 + NMgSO4)*18.016 \n", + "mwatert = mwaterin + mwaterr \n", + "mvaporized = mwatert - mH2O \n", + "m = mvaporized * 100/mtotallime #water vaporized per 100kg of limestone\n", + "print \"(c)the mass of water vaporized per 100kg of limestone = %.2f\"%m,\"kg\"\n", + "mCO2pr = (NCaSO4 + NMgSO4)*44 \n", + "mCO2rel = mCO2pr - mCO2r \n", + "m1 = mCO2rel * 100 / mtotallime #CO2 per 100kg of limestone\n", + "print \"(d)the mass of CO2 per 100kg of limestone = %.2f\"%m1,\"kg\"\n", + "\n", + "# note : answer may vary because of rounding error" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Percentage of CaCO3 in limestone = 62.31 %\n", + " Percentage of MgCO3 in limestone = 32.98 %\n", + " Percentage of inerts in limestone = 4.71 %\n", + "(b)The percentage excess of acid used = 11.37 %\n", + "(c)the mass of water vaporized per 100kg of limestone = 38.25 kg\n", + "(d)the mass of CO2 per 100kg of limestone = 42.72 kg\n" + ] + } + ], + "prompt_number": 13 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 10.12 pageno : 353" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# variables \n", + "macid = 1000. #kg ( basis - dilute phosphoric acid )\n", + "Mphacid = 97.998 \n", + "P = 1.25 #% ( dilute % )\n", + "\n", + "# Calculation \n", + "mphacid = macid * P /100 \n", + "Nphacid = mphacid / Mphacid \n", + "\n", + "#1mole of phosphoric acid - 1mole of trisodium phosphate\n", + "NTSP = Nphacid \n", + "MTSP = 380.166 \n", + "mTSP = NTSP * MTSP \n", + "\n", + "# Result\n", + "print \"(a)Maximum weight of TSP obtained = %.2f\"%mTSP,\"kg\"\n", + "NCO2 = NTSP \n", + "Pwater = 6.27 #kPa\n", + "\n", + "#since gas is saturated with water vapour, vapour pressure = partial pressure\n", + "Nwater = NCO2 * Pwater / ( 100 - Pwater ) \n", + "Ntotal = Nwater + NCO2 \n", + "P = 100. #kPa\n", + "T = 310. #K\n", + "V = Ntotal * 101.3 * T *22.4143 / ( P * 273.15 ) \n", + "print \"(b)Volume of CO2 = %.2f\"%V,\"m**3\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Maximum weight of TSP obtained = 48.49 kg\n", + "(b)Volume of CO2 = 3.51 m**3\n" + ] + } + ], + "prompt_number": 14 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 10.13 pageno : 353" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# variables \n", + "mTSPd = 1000. #kg ( basis - 20% dilute TSP )\n", + "P = 20. #%\n", + "\n", + "# Calculation \n", + "mTSP = mTSPd * P / 100 \n", + "NTSP = mTSP / 163.974 \n", + "msodaashd = NTSP * 106 \n", + "mphacidd = NTSP * 97.998 \n", + "mNaOHd = NTSP * 40.008 \n", + "Pphacid = 85. #% (85% solution phosphoric acid)\n", + "PNaOH = 50. #% (50% solution NaOH)\n", + "\n", + "#let x be the water in soda ash,\n", + "#taking water balance,\n", + "x = (mTSPd - mTSP) - mNaOHd * PNaOH /(100 - PNaOH) - mphacidd * (100 - Pphacid) / Pphacid \n", + "msodaash = msodaashd + x \n", + "C = msodaashd *100 / msodaash \n", + "\n", + "# Result\n", + "print \"(a)Concentration of soda ash solution = %.2f\"%C,\"%\"\n", + "mphacid = mphacidd * 100 / Pphacid \n", + "R = msodaash / mphacid \n", + "print \"(b)Weight ratio in which soda ash and commercial phosphoric acid are mixed = %.2f\"%R\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Concentration of soda ash solution = 15.04 %\n", + "(b)Weight ratio in which soda ash and commercial phosphoric acid are mixed = 6.11\n" + ] + } + ], + "prompt_number": 15 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 10.14 pageno : 355" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# variables \n", + "m = 1000. #kg ( basis - pig iron produced )\n", + "\n", + "#let x be the iron ore charged and y be the amount of flux added and z be the weight of slag produced\n", + "PFepg = 95. #% ( Fe% in product )\n", + "PCpg = 4. #%\n", + "PSipg = 1. #%\n", + "PFech = 85. #% (Fe% in feed )\n", + "mcoke = 1000. #kg\n", + "PCcoke = 90. #%\n", + "PSicoke = 10. #%\n", + "PSislag = 60. #%\n", + "PSiflux = 5. #%\n", + "PCaCO3fx = 90. #%\n", + "PMgCO3fx = 5. #%\n", + "PCMslag = 40. #% \n", + "\n", + "# Calculation \n", + "#iron balance gives,\n", + "x = PFepg * m *159.694 / ( PFech * 111.694) \n", + "#silicon balance gives,\n", + "#x*(100 - PFech)*28.086/(100*60.086)+mcoke*Psicoke*28.086/(100*60.086)+y*PSiflux*28.086/(100*60.086) = 10 + z*Psislag*28.086 / ( 100*60.086 )\n", + "#taking (CaO + MgO) balance\n", + "#y * ((PCaCO3fx)*56.88/(100*100.88)+(PMgCO3fx*40.312/(100*84.312))=z*PCMslag/100\n", + "#solving above 2 equations , we get\n", + "y = 403.31 \n", + "\n", + "# Result\n", + "print \"the amount of flux required to produce 1000kg of pig iron = \",y,\"kg\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "the amount of flux required to produce 1000kg of pig iron = 403.31 kg\n" + ] + } + ], + "prompt_number": 16 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 10.15 pageno : 357" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# variables \n", + "N = 100. #mol(basis - scrubber)\n", + "NNOs = 2.4 #mol\n", + "NN2s = 92. #mol\n", + "NO2s = 5.6 #mol\n", + "PNOs = 20. #% ( Percentage NO leaving scrubber)\n", + "\n", + "# Calculation \n", + "NNOreac = NNOs * 100 / PNOs \n", + "#let x mol of nitroge be produced in the reaction, then the amount of N2 present in the air = NN2s - x mol - (1)\n", + "#4NH3 + 5O2 = 4NO + 6H2O\n", + "#4NH3 + 3O2 = 2N2 + 6H2O\n", + "#4moles of NO - 5 moles of O2, 2moles of N2 - 3 moles of O2\n", + "#Total oxygen used up, O = NNOreac * 5/4 + x*3/2\n", + "#total oxygen supplied, NOtotal= (O) + NO2s\n", + "#Nitrogen associated with O2 supplied NN2 = NOtotal*79/21 - (2)\n", + "#comparing 1 and 2,\n", + "x = 2.1835 \n", + "#12moles NO requires 12moles ammonia, 1 mole N2 requires 2 mole ammonia\n", + "Nammonia = x*2 + NNOreac \n", + "Oreq = Nammonia * 5 / 4 \n", + "Osupp = NNOreac * 5/4 + x*3/2 + NO2s \n", + "Pexcess = (Osupp - Oreq)*100/Oreq \n", + "\n", + "# Result\n", + "print \"(a)Percentage excess oxygen = %.1f\"%Pexcess,\"%\"\n", + "fr = x * 2 / Nammonia \n", + "print \"Fraction of ammonia taking part in side reaction = %.3f\"%fr\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Percentage excess oxygen = 16.7 %\n", + "Fraction of ammonia taking part in side reaction = 0.267\n" + ] + } + ], + "prompt_number": 17 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 10.16 pageno : 359" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# variables \n", + "m = 100. #kg (basis sodium nitrate reacted)\n", + "NNaNO3 = m/85\n", + " \n", + "# Calculation \n", + "#2NaNO3 + H2SO4 = 2HNO3 + Na2SO4\n", + "mh2so4 = NNaNO3 * 98.08/2 \n", + "mhno3 = NNaNO3*63.008 \n", + "mna2so4 = NNaNO3 * 142.064 /2 \n", + "Phno3 = 2. #%(percent nitric acid remaining in the cake)\n", + "mhno3cake = mhno3 * Phno3 / 100 \n", + "Ph2so4 = 35. #%\n", + "Pwater = 1.5 #%\n", + "mtotal = (mna2so4 + mhno3cake)*100/(100 - Ph2so4 - Pwater) \n", + "mwater = Pwater * mtotal / 100 \n", + "mh2so4c = Ph2so4 * mtotal / 100 \n", + "Pna2so4 = mna2so4 *100/mtotal \n", + "Phno3c = mhno3cake * 100 / mtotal \n", + "\n", + "# Result\n", + "print \"(a)Mass of Na2SO4 in the cake = %.3f\"%mna2so4,\"kg\"\n", + "print \"Mass of H2SO4 in the cake = %.3f\"%mh2so4c,\"kg\"\n", + "print \"Mass of HNO3 in the cake = %.4f\"%mhno3,\"kg\"\n", + "print \"Mass of water in the cake = %.3f\"%mwater,\"kg\"\n", + "print \"Percentage of Na2SO4 in the cake = %.3f\"%Pna2so4,\"%\"\n", + "print \"Percentage of H2SO4 in the cake = %.2f\"%Ph2so4,\"%\"\n", + "print \"Percentage of HNO3 in the cake = %.2f\"%Phno3c,\"%\"\n", + "print \"Percentage of water in the cake = %.2f\"%Pwater,\"%\"\n", + "\n", + "mh2so4req = mh2so4 + mh2so4c \n", + "P = 95. #% (95% dilute sulphuric acid)\n", + "w = mh2so4req * 100 / P \n", + "print \"(b)Weight of 95%% sulphuric acid required = %.2f\"%w,\"kg\"\n", + "mnitric = mhno3 - mhno3cake \n", + "print \"(c)weight of nitric acid product obtained = %.2f\"%mnitric,\"kg\"\n", + "mwaterd = w*(1-P/100)-mwater \n", + "print \"(d)the water vapour tha tis distilled from the nitre cake = %.3f\"%mwaterd,\"kg\"\n", + "\n", + "\n", + "# Note : The value of HNO3 is taken wrongly in the textbook while calculating mass of HNO3" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Mass of Na2SO4 in the cake = 83.567 kg\n", + "Mass of H2SO4 in the cake = 46.878 kg\n", + "Mass of HNO3 in the cake = 74.1271 kg\n", + "Mass of water in the cake = 2.009 kg\n", + "Percentage of Na2SO4 in the cake = 62.393 %\n", + "Percentage of H2SO4 in the cake = 35.00 %\n", + "Percentage of HNO3 in the cake = 1.11 %\n", + "Percentage of water in the cake = 1.50 %\n", + "(b)Weight of 95% sulphuric acid required = 110.08 kg\n", + "(c)weight of nitric acid product obtained = 72.64 kg\n", + "(d)the water vapour tha tis distilled from the nitre cake = 3.495 kg\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 10.17 pageno : 361" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# variables \n", + "m = 50. #kg ( basis - mass of brine charged )\n", + "#let x be the amount of NaCl in the brine\n", + "Pelect = 50. #% ( electrolyzed )\n", + "\n", + "#2NaCl + 2H2O = 2NaOH + Cl2 + H2\n", + "#amount of NaCl reacted =x*Pelect/(100*58.45)kmol=x*Pelect/100kg ( 1 )\n", + "#amount of water reacted = x * Pelect * 18.016 / ( 100 * 58.45 )kg ( 2 )\n", + "#Gases produced, Cl2 = x * Pelect / (100 * 58.45 * 2 )kmol = x * Pelect *71/ (100 * 58.45 * 2 )kg ( 3 )\n", + "#H2 = x * Pelect / (100 * 58.45 * 2 )kmol = x * Pelect *2.016/ (100 * 58.45 * 2 )kg ( 4 )\n", + "Nwater = 0.03 #mol water vapour/mol of gas\n", + "\n", + "# Calculation \n", + "#water vapour present = Nwater * 2*(Cl2 + H2)kmol = Nwater * 2*(Cl2 + H2)*18.016 kg ( 5 )\n", + "#NaoH = x * Pelect * 40.008/ (100 * 58.45 )kg ( 6 )\n", + "#water = water in brine - water reacted - water present in gas ( 7 )\n", + "#= (m - Pelect/100) - water reacted ( 2 ) - water present in the gas( 5 )\n", + "#Total weight of solution = NaCl ( 1 ) + NaOH ( 6 ) + Water ( 7 )\n", + "#since NaOH is 10 percent of the total weight, we have NaOH = 0.1 * total weight, from these we get, \n", + "x = 0.1 * 50 / (0.1* 0.3165 + 0.3422 ) \n", + "NaOH = x * Pelect * 40.008/ (100 * 58.45 ) \n", + "NaCl = x * Pelect / 100 \n", + "water = 34.5032 #kg\n", + "Pevap = 50. #NaOh percentage in solution leaving evaporator\n", + "\n", + "#taking NaOH balance\n", + "mevap = NaOH * 100 / Pevap \n", + "\n", + "# Result\n", + "print \"(a)amount of 50%% NaOH solution produced = %.4f\"%mevap,\"kg\"\n", + "Cl2 = x * Pelect *71/ (100 * 58.45 * 2 ) #kg\n", + "H2 = x * Pelect *2.016/ (100 * 58.45 * 2 ) #kg\n", + "print \"(b)Chlorine produced = %.4f\"%Cl2,\"kg\"\n", + "print \" Hydrogen produced = %.4f\"%H2,\"kg\"\n", + "Pleav = 1.5 #% NaCl leaving the evaporator\n", + "NaClleav = mevap * Pleav / 100 \n", + "mcrystal = NaCl - NaClleav \n", + "print \"(c)Amount of NaCl crystallized = %.4f\"%mcrystal,\"kg/h\"\n", + "mwaterleav = mevap - NaOH - NaClleav \n", + "Mwaterevap = water - mwaterleav \n", + "print \"(d)Weight of water evaporated = %.4f\"%Mwaterevap,\"kg\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)amount of 50% NaOH solution produced = 9.1545 kg\n", + "(b)Chlorine produced = 4.0615 kg\n", + " Hydrogen produced = 0.1153 kg\n", + "(c)Amount of NaCl crystallized = 6.5499 kg/h\n", + "(d)Weight of water evaporated = 30.0633 kg\n" + ] + } + ], + "prompt_number": 21 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 10.18 pageno : 364" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# variables \n", + "m = 100. #mol ( basis reactore exit gas )\n", + "#CH3OH + O2 = HCOOH + H2O\n", + "#CH3OH + O2 / 2 = HCHO + H2O\n", + "Nn2 = 64.49 #mol\n", + "No2 = 13.88 #mol\n", + "Nh2o = 5.31 #mol\n", + "Nch3oh = 11.02 #mol\n", + "Nhcho = 4.08 #mol\n", + "Nhcooh = 1.22 #mol\n", + "\n", + "# Calculation \n", + "#x be the moles of methanol reacted, taking C balance, we get,\n", + "x = Nch3oh + Nhcho + Nhcooh \n", + "Pconv = Nhcho * 100 / x \n", + "\n", + "# Result\n", + "print \"(a)Percent conversion of formaldehyde = \",Pconv,\"%\"\n", + "Nair = Nn2 * 100 / 79. \n", + "R = Nair / x \n", + "print \"(b)Ratio of air to methanol in the feed = %d\"%R\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Percent conversion of formaldehyde = 25.0 %\n", + "(b)Ratio of air to methanol in the feed = 5\n" + ] + } + ], + "prompt_number": 22 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 10.19 pageno : 367" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# variables \n", + "NA = 100. #mol ( basi - 100 mol A in the fresh feed )\n", + "Pconv = 95. #%\n", + "\n", + "# Calculation \n", + "NApro = NA * (100 - Pconv)/100 \n", + "\n", + "#A = 2B + C \n", + "NB = NA * Pconv * 2 / 100 \n", + "NC = NA * Pconv/100 \n", + "PAent = 0.5 #%\n", + "NAent = NApro * 100 / PAent \n", + "PBrec = 1. #%\n", + "NBent = NB * 100 / (100 - PBrec) \n", + "m = (NAent - NApro + NA) \n", + "conv = ((NAent - NApro + NA) - NAent)*100/(NAent - NApro + NA) \n", + "\n", + "# Result\n", + "print \"(a)single pass converion = %.2f\"%conv,\"%\"\n", + "Nrecycled = (NAent - NApro) + (NBent - NB) \n", + "R = Nrecycled/NA \n", + "print \"(b)recycle ratio = %.2f\"%R\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)single pass converion = 8.68 %\n", + "(b)recycle ratio = 9.97\n" + ] + } + ], + "prompt_number": 23 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 10.20 pageno : 368" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# variables \n", + "m = 100. #kg ( basis - sucrose solution as fresh feed )\n", + "\n", + "#R - recycle reactor exit, \n", + "#let x be the weight fraction of sucrose and y be the weight fracton of inversion sugar in the recycle stream, \n", + "#for combined stream fraction of Glucose + fructose = 0.04\n", + "#z be the weight fraction of sucrose in the combined stream entering the reactor\n", + "Psfeed = 25. #% percent sucrose in fresh feed\n", + "\n", + "#sucrose balance gives, 25 + R*x = (100+R)* z (A)\n", + "#Glucose + fructose balance, R * y = (100 + R )*0.04 (B)\n", + "Sucrosecon = 71.7 #% sucrose consumed\n", + "\n", + "\n", + "# Calculation \n", + "#sucrose balance around the reactor,(100+R)z=0.717*(100+R)z+(100+R)x (C)\n", + "#From (C) , x = 0.283*z (D)\n", + "#Amount converted to Glucose + fructose = 0.717 ( 100 + R )* z \n", + "# = 0.717 ( 100 + R )* z * 360.192 / 342.176 kg\n", + "#Glucose and fructose balance around the reactor,\n", + "#(100+R)*0.04 + 0.717(100+R)*z*360.192/342.176 = (100+R)*y (E)\n", + "#Solving (E), y = 0.04 + 0.7548*z (F)\n", + "#Solving, (A), (B), (C) and (F)\n", + "x = 0.06 \n", + "y = 0.2 \n", + "z = 0.212 \n", + "R = 25 \n", + "\n", + "# Result\n", + "print \"(a)Recycle flow = \",R,\"kg\"\n", + "print \"(b)Combined concentration of Glucose and Fructose in the recycle stream = \",y*100,\"%\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Recycle flow = 25 kg\n", + "(b)Combined concentration of Glucose and Fructose in the recycle stream = 20.0 %\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 10.21 pageno : 370" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# variables \n", + "N = 1. #mol ( basis - combined feed )\n", + "\n", + "#F - moles of fresh feed\n", + "Pinert = 0.5 #%\n", + "Pconv = 60. #%\n", + "P1inert = 2. #%\n", + "\n", + "# Calculation \n", + "NA1 = N * ( 1- P1inert/100. ) \n", + "NA2 = NA1 * ( 1 - Pconv / 100. ) \n", + "NB2 = NA1 - NA2 \n", + "N1inert = N * P1inert / 100. \n", + "N2inert = N1inert \n", + "\n", + "#Let R be the moles recycled and P be the moles purged\n", + "#W = R + P\n", + "W = NA2 + N2inert # (A)\n", + "PWinert = N2inert * 100/ ( NA2 + N2inert) \n", + "\n", + "#component A balance, A fresh feed = A purge stream + A recycle stream\n", + "#F * 0.9 = P * 0.9515 + 0.588 (B)\n", + "#inert balance at the point where fresh feed is mixed with the recycle,\n", + "#F*0.005 + R*0.0485 = 1* 0.02 (C)\n", + "#Solving (A),(B) and (C)\n", + "F = 0.6552 #mol\n", + "P = 0.0671 #mol\n", + "R = 0.3448 #mol\n", + "\n", + "# Result\n", + "print \"(a)moles of recycle stream = \",R,\"mol\"\n", + "print \"(b)moles of purge stream = \",P,\"mol\"\n", + "NAconv = NA1 - NA2 \n", + "NAf = F * (1 - Pinert / 100.) \n", + "Conv = NAconv *100./ NAf \n", + "print \"(c)Overall conversion = %.1f\"%Conv,\"%\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)moles of recycle stream = 0.3448 mol\n", + "(b)moles of purge stream = 0.0671 mol\n", + "(c)Overall conversion = 90.2 %\n" + ] + } + ], + "prompt_number": 25 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 10.22 pageno : 371" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# variables \n", + "N = 100. #moles ( Basis - Fresh feed )\n", + "Pconv = 20. #%\n", + "xco = 0.33 \n", + "xh2 = 0.665 \n", + "xch4 = 0.005 \n", + "\n", + "#R - recycle stream, P - purge stream\n", + "#x - mole fraction of CO in recycle stream , \n", + "xch4r = 0.03\n", + "\n", + "# Calculation \n", + "#CO = x, H2 = 1 - xch4r - CO = 0.97- x \n", + "#methane balance over the entire system, \n", + "P = xch4 * N / xch4r \n", + "#taking caron balance, 33.5 = M + P ( 0.03 + x )\n", + "#Hydrogen balance, 66.5 + 2*0.5 = 2M + P(2*0.03 + 0.97 - x) \n", + "#substituting P, M + 16.67x = 33.0 and 2M - 16.67x = 50.33\n", + "M = (33.0 + 50.33)/3 \n", + "x = ((xco + xch4)*N - M ) / P - xch4r \n", + "\n", + "#methanol balance,(xco*N+Rx) * Poncv/100 = M\n", + "R = (M*100 / Pconv - (xco*N))/x \n", + "\n", + "# Result \n", + "print \"(a)moles of recycle stream = %.1f\"%R,\"mol\"\n", + "print \"(b)moles of purge stream = %.2f\"%P,\"mol\"\n", + "H2 = 1 - xch4r - x \n", + "print \"(c)CH4 in purge stream = \",xch4r*100,\"%\"\n", + "print \"CO in purge stream = \",x*100,\"%\"\n", + "print \"hydrogen in purge stream = \",H2*100,\"%\"\n", + "print \"(d)Methanol produced = %.2f\"%M,\"mol\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)moles of recycle stream = 337.9 mol\n", + "(b)moles of purge stream = 16.67 mol\n", + "(c)CH4 in purge stream = 3.0 %\n", + "CO in purge stream = 31.34 %\n", + "hydrogen in purge stream = 65.66 %\n", + "(d)Methanol produced = 27.78 mol\n" + ] + } + ], + "prompt_number": 26 + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/Stoichiometry_And_Process_Calculations/ch11.ipynb b/Stoichiometry_And_Process_Calculations/ch11.ipynb new file mode 100755 index 00000000..b8409421 --- /dev/null +++ b/Stoichiometry_And_Process_Calculations/ch11.ipynb @@ -0,0 +1,1955 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "Chapter 11 : Energy Balance Thermophysics" + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.1 pageno : 405" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# variables \n", + "m = 75. #kg\n", + "g = 9.81 #m**2/s\n", + "d = 10. #m\n", + "t = 2.5*60 #s\n", + "\n", + "# Calculation \n", + "f = m*g \n", + "w = f * d \n", + "P = w / t \n", + "\n", + "# Result\n", + "print \"The work done = \",w,\"Nm\"\n", + "print \"Power required = \",P,\"W\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The work done = 7357.5 Nm\n", + "Power required = 49.05 W\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.2 pageno : 405" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# variables \n", + "PE = 1.5*10**3 #J\n", + "m = 10. #kg\n", + "g = 9.81 #m/s**2\n", + "v = 50. #m/s\n", + "\n", + "# Calculation \n", + "#PE = mgz\n", + "z = PE / (m*g) \n", + "KE = m* (v**2) / 2 \n", + "\n", + "# Result\n", + "print \"Height of the body from the ground = %.1f\"%z,\"m\"\n", + "print \"Kinetic energy of the body = \",KE/1000,\"kJ\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Height of the body from the ground = 15.3 m\n", + "Kinetic energy of the body = 12.5 kJ\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.3 pageno : 405" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import math \n", + "# Variables \n", + "d = 100. /1000 #m\n", + "m = 50. #kg\n", + "P = 1.01325*10**5. #Pa\n", + "\n", + "# Calculation \n", + "A = math.pi * (d**2)/4 \n", + "Fatm = P * A \n", + "Fwt = m * g \n", + "Ftotal = Fatm + Fwt \n", + "P = Ftotal / A\n", + "\n", + "# Result \n", + "print \"(a)Pressure of the gas = %.4f\"%(P/10**5),\"bar\"\n", + "z = 500/1000. #m\n", + "w = Ftotal * z \n", + "print \"(b)Work done by the gas = %.2f\"%w,\"J\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Pressure of the gas = 1.6378 bar\n", + "(b)Work done by the gas = 643.15 J\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.4 pageno : 406" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "Sgr = 0.879 \n", + "F = 5. #m**3/h\n", + "\n", + "# Calculation \n", + "D = Sgr * 1000. \n", + "m = F * D/3600. #kg/s\n", + "P = 3500. #kPa\n", + "W = P * m * 1000/ D \n", + "\n", + "# Result\n", + "print \"Power requirement for the pump = %d\"%W,\"W\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Power requirement for the pump = 4861 W\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.5 pageno : 408" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import math \n", + "# Variables \n", + "\n", + "d = 3. #m\n", + "m = 12500. #kg\n", + "P = 7000. #kPa\n", + "\n", + "# Calculation \n", + "U = 5.3*10**6 #kJ\n", + "Vtank = 4*math.pi*((d/2)**3) / 3 \n", + "Vliq = Vtank / 2 \n", + "H = U + P * Vliq \n", + "\n", + "# Result\n", + "print \"Specific enthalpy of the fluid in the tank = %.2f\"%(H/m),\"kJ/kg\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Specific enthalpy of the fluid in the tank = 427.96 kJ/kg\n" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.6 pageno : 409" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "P = 101.3 #kPa\n", + "SVl = 1.04 * 10**-3 #m**3/kmol\n", + "SVg = 1.675 #m**3/kmol\n", + "Q = 1030. #kJ\n", + "\n", + "# Calculation \n", + "W = P * 10**3 * (SVg - SVl)/1000 \n", + "U = Q - W \n", + "H = U + P * 10**3 * (SVg - SVl)/1000 \n", + "\n", + "# Result\n", + "print \"Change in internal energy = %.2f\"%U,\"kJ/kmol\"\n", + "print \"Change in enthalpy = \",H,\"kJ/kmol\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Change in internal energy = 860.43 kJ/kmol\n", + "Change in enthalpy = 1030.0 kJ/kmol\n" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.7 pageno : 409" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "#work is done on the system, hence, W is negative\n", + "\n", + "W = - 2 * 745.7 #J/s\n", + "#heat is transferres to the surrounding, hence, heat transferred is negative,\n", + "Q = -3000. #kJ/h\n", + "\n", + "# Calculation \n", + "U = Q*1000/3600 - W \n", + "\n", + "# Result\n", + "print \"Change in internal energy = %.2f\"%U,\"J/s\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Change in internal energy = 658.07 J/s\n" + ] + } + ], + "prompt_number": 9 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.8 pageno : 410" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "#Fe(s) + 2HCl(aq) = FeCl2(aq) + H2(g)\n", + "MFe = 55.847 \n", + "m = 1. #kg\n", + "\n", + "# Calculation \n", + "Nfe = m * 10**3/MFe \n", + "Nh2 = Nfe #(since 1 mole of Fe produces 1 mole of H2)\n", + "T = 300. #K\n", + "R = 8.314 \n", + "\n", + "#the change in volume is equal to the volume occupied by hydrogen produced\n", + "PV = Nh2 * R * T \n", + "W = PV \n", + "\n", + "# Result\n", + "print \"Work done = %.2f\"%W,\"J\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Work done = 44661.31 J\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.9 pageno : 412" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "#Cp =1.436 + 2.18*10**-3*T \n", + "from scipy.integrate import quad \n", + "\n", + "# variables \n", + "m = 1000./3600 #kg/s\n", + "T1 = 380. #K\n", + "T2 = 550. #K\n", + "\n", + "# Calculation \n", + "def f0(T): \n", + "\t return 1.436 + 2.18*10**-3*T\n", + "\n", + "x = quad(f0,T1,T2)[0]\n", + "Q = m*x \n", + "\n", + "# Result\n", + "print \"Heat load on the heater = %.1f\"%Q,\"kW\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Heat load on the heater = 115.7 kW\n" + ] + } + ], + "prompt_number": 11 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.10 page no : 413" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "#Cp = 26.54 + 42.454*10**-3 * T - 14.298 * 10**-6 * T**2 \n", + "\n", + "from scipy.integrate import quad \n", + "\n", + "# variables \n", + "T1 = 300. #K\n", + "T2 = 1000. #K\n", + "m = 1. #kg\n", + "N = m/44 #kmol\n", + "\n", + "# Calculation \n", + "def f3(T): \n", + "\t return 26.54 + 42.454*10**-3 * T - 14.298 * 10**-6 * T**2\n", + "\n", + "x = quad(f3,T1,T2)[0]\n", + "\n", + "Q = N*x \n", + "\n", + "# Result\n", + "print \"(a)Heat required = %.2f\"%Q,\"kJ\"\n", + "\n", + "#for temperature in t degree celsius\n", + "#Cp = 26.54 + 42.454*10**-3 * (t + 273.15) - 14.298 * 10**-6 * (t + 273.15)**2\n", + "#Cp = 37.068 + 34.643 * 10**-3*t - 14.298* 10**-6 * t**2 (kJ/kmolC)\n", + "#Cp = 8.854 + 8.274*10**-3*t -3.415*10**-6*t**2 ( Kcal/kmolC)\n", + "#For degree Fehreneit scale,replacet by ( t1 - 32)/18, we get\n", + "#Cp = 8.7058 + 4.6642 * 10**-3 *t1 - 1.0540 * 10**-6 * t1**2 ( Btu/lbmolF)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Heat required = 755.85 kJ\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.11 pageno : 414" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "%pylab inline\n", + "\n", + "from matplotlib.pyplot import *\n", + "\n", + "# variables \n", + "T = [273, 373, 473, 573, 673, 773, 873, 973, 1073, 1173, 1273] \n", + "Cp = [33.6, 35.1, 36 ,36.6, 37, 37.3, 37.5, 37.6, 37.7, 37.8, 37.9] \n", + "\n", + "# Calculation \n", + "plot(T,Cp)\n", + "suptitle(\"Determination of enthalpy change \")\n", + "xlabel(\"Temperature, K \")\n", + "ylabel(\"Heat capacity, kJ/kmol K\")\n", + "\n", + "H = 36828. #kJ/kmol\n", + "\n", + "# Result\n", + "print \"Enthalpy change = \",H,\"kJ/kmol\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Populating the interactive namespace from numpy and matplotlib\n" + ] + }, + { + "metadata": {}, + "output_type": "display_data", + "png": "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\n", + "text": [ + "<matplotlib.figure.Figure at 0x27f4550>" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enthalpy change = 36828.0 kJ/kmol\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.12 page no : 415" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "#Cp = 26.586 + 7.582 * 10 **-3 * T - 1.12 * 10**-6 * T**2\n", + "\n", + "from scipy.integrate import quad \n", + "\n", + "# variables \n", + "T1 = 500. #K\n", + "T2 = 1000. #K\n", + "\n", + "# Calculation \n", + "def f5(T): \n", + "\t return 26.586 + 7.582 * 10**-3 * T - 1.12 * 10**-6 * T**2\n", + "\n", + "x = quad(f5,T1,T2)[0]\n", + "\n", + "Cpm = 1 *x / ( T2 - T1 ) \n", + "\n", + "# Result\n", + "print \"(a)Mean molal heat capacity = %.3f\"%Cpm,\"kJ/kmolK\"\n", + "V = 500. #m**3 \n", + "N = V / 22.4143 \n", + "Q = N * Cpm * ( T2 - T1 ) \n", + "print \"(b)Heat to be supplied = %.3e\"%Q,\"kJ/h\"\n", + "T3 = 1500. #K\n", + "Q1 = Cpm * (T3 - T1) \n", + "\n", + "def f6(T): \n", + "\t return 26.586 + 7.582 * 10 **-3 * T - 1.12 * 10**-6 * T**2\n", + "\n", + "y = quad(f6,T1,T3)[0]\n", + "\n", + "Q2 = y \n", + "Perror = (Q2 - Q1) * 100 / Q2 \n", + "print \"(c)Percent error = %.1f\"%Perror,\"%\"\n", + "\n", + "# note : answer may vary because of rounding error.\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Mean molal heat capacity = 31.619 kJ/kmolK\n", + "(b)Heat to be supplied = 3.527e+05 kJ/h\n", + "(c)Percent error = 4.1 %\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.13 page no : 416" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "# variables \n", + "T1 = 1500. #K\n", + "Tr = 273. #K\n", + "T2 = 400. #K\n", + "Cpm1 = 50. #kJ/kmol\n", + "Cpm2 = 35. #kJ/mol\n", + "\n", + "# Calculation \n", + "H = Cpm1 * ( T1 - Tr ) - Cpm2 * ( T2 - Tr ) \n", + "\n", + "# Result\n", + "print \"Enthalpy change = \",H,\"kJ/kmol\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enthalpy change = 56905.0 kJ/kmol\n" + ] + } + ], + "prompt_number": 16 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.14 pageno : 417" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from scipy.integrate import quad \n", + "\n", + "# variables \n", + "#CO, 26.586 + 7.582*10**-3*T - 1.12*10**-6*T**2\n", + "#CO2, 26.540 + 42.454*10**-3*T - 14.298*10**-6*T**2\n", + "#O2, 25.74 + 12.987*10**-3*T - 3.864*10**-6*T**2\n", + "#N2, 27.03 + 5.815*10**-3*T - 0.289*10**-6*T**2\n", + "#Cpmix = summation ( yi*Cpi ) = summation(yi*ai + yi*bi*T + yi*ci*T**2)\n", + "\n", + "xco2 = 0.09 \n", + "xco = 0.02 \n", + "xo2 = 0.07 \n", + "xn2 = 0.82 \n", + "T1 = 600. #K\n", + "T2 = 375. #K\n", + "\n", + "# Calculation \n", + "sumai = xco * 26.586 +xco2 * 26.540 + xo2 * 25.74 + xn2*27.03 \n", + "sumbi = xco * 7.582*10**-3 + xco2*42.454*10**-3+xo2*12.987*10**-3 + xn2*5.815*10**-3 \n", + "sumci = -(xco * 1.12*10**-6 + xco2*14.298*10**-6+xo2*3.864*10**-6+xn2*0.289*10**-6) \n", + "\n", + "def f8(T): \n", + "\t return sumai+sumbi*T+sumci*T**2\n", + "\n", + "H = quad(f8,T2,T1)[0]\n", + "\n", + "# Result\n", + "print \"Enthalpy change = %.2f\"%H,\"kJ/kmol\"\n", + "\n", + "# note : Calculating integration using quad may vary answer. Because Python use's its own methodology to calculate quad." + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enthalpy change = 7009.12 kJ/kmol\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.15 pageno : 420" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "Hna = 26.04 #J/g-atomK\n", + "Hs = 22.6 #J/g-atomK\n", + "Ho = 16.8 #J/g-atomK\n", + "Hh = 9.6 #J/g-atomK\n", + "\n", + "# Calculation \n", + "Hna2so410h2o = 2*Hna + Hs + 14*Ho + 20*Hh \n", + "Hexp = 592.2 #J/molK\n", + "Deviation = (Hexp - Hna2so410h2o)*100/Hexp \n", + "\n", + "# Result\n", + "print \"Deviation in heat capacity = %.2f\"%Deviation,\"%\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Deviation in heat capacity = 15.25 %\n" + ] + } + ], + "prompt_number": 18 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.16 pageno : 421" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "P1 = 75. #kPa\n", + "T1 = 573. #K\n", + "Tvap = 365. #K\n", + "Tbasis = 273. #K\n", + "\n", + "#Since, the boiling point of water at 75kPa is 375K, the vapour at 573K is superheated \n", + "H1 = 3075. #kJ/kg\n", + "Cliq = 4.2 #kJ/kgK\n", + "Cvap = 1.97 # kJ/kg/K\n", + "m = 1. #kg\n", + "\n", + "\n", + "# Calculation \n", + "#let assume converting liq. water into superheated stream occurs in 3 steps,\n", + "\n", + "Hc1 = m*Cliq * ( Tvap - Tbasis ) \n", + "\n", + "\n", + "Hc3 = m*Cvap*(T1 - Tvap) \n", + "\n", + "#total enthalpy = 3075 = Hc1 + Hc2 + Hc3, therefore\n", + "Hc2 = H1 - Hc1 - Hc3 \n", + "\n", + "# Result\n", + "print \"Heat of vapourisation = \",Hc2,\"kJ/kg\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Heat of vapourisation = 2278.84 kJ/kg\n" + ] + } + ], + "prompt_number": 19 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.17 pageno : 422" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from scipy.integrate import quad\n", + "\n", + "# variables \n", + "T1 = 250. #K\n", + "T = 273.15 #K\n", + "T2 = 400. #K\n", + "Cice = 2.037 #kJ/kgK\n", + "T3 = 373.15 #K\n", + "Cliq = 75.726 #kJ/kmolK\n", + "\n", + "#Cp = 30.475 + 9.652*10**-3*T + 1.189*10**-6*T**2\n", + "Hfusion = 6012. #kJ/kmol\n", + "Hvap = 40608. #kJ/kmol\n", + "\n", + "\n", + "# Calculation \n", + "#1 - Heat for raising the temperature of ice, H1\n", + "H1 = Cice * (T - T1) \n", + "#2 - Latent heat of fusion of ice, Hf\n", + "Hf = Hfusion / 18.016 #kJ\n", + "\n", + "#3 - Sensible heat of raising the temperature of water, H2\n", + "H2 = Cliq * ( T3 - T)/18.016 \n", + "#4 - Latent heat of vaporization of water, Hv\n", + "Hv = Hvap / 18.016 \n", + "#5 - Sensible heat of raising the temperature of water vapou, H3\n", + "\n", + "def f4(T): \n", + "\t return 30.475 + 9.652*10.**-3*T + 1.189*10.**-6*T**2.\n", + "\n", + "H3 = 51.243883 #quadrature(f4,T3,T2)[0]\n", + "\n", + "Q = H1 + H2 + H3 + Hf + Hv \n", + "\n", + "# Result\n", + "print \"Heat required = %.1f\"%Q,\"kJ\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Heat required = 3106.4 kJ\n" + ] + } + ], + "prompt_number": 21 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.18 pageno : 423" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# variables \n", + "#Cp = 0.16 + 4.78 * (10**-3) * T ( organic liquid )\n", + "#Cp = 0.7935 + 1.298 * (10**-4) * T ( CCL4 )\n", + "Tb = 349.9 #K\n", + "Hv = 195. #kJ/kg\n", + "Cp = 0.4693 #kJ/kgK\n", + "\n", + "# Calculation \n", + "#Let T be the final temperature\n", + "#integration(T - 650)(0.16 + 4.78 * (10**-3) * T)dt = integration(295 - T)(0.7935 + 1.298 * (10**-4) * T)dt\n", + "# the above equation yields, 2.4549*(10**-3)*T**2 + 0.9535*T - 1353.51 = 0, from this we get\n", + "T = 573.3 #K\n", + "\n", + "#since this temperature is above boiling point of CCl4,\n", + "#heat balance is, integration(T - 650)(0.16 + 4.78 * (10**-3) * T)dt = integration(295 - 349.9)(0.7935 + 1.298 * (10**-4) * T)dt + Hv + integration(349.9 - T)*0.4693*dT\n", + "#solving above equation, we get,\n", + "T1 = 540.1 #K\n", + "\n", + "# Result\n", + "print \"equilibrium temperature of the mixture = \",T1,\"K\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "equilibrium temperature of the mixture = 540.1 K\n" + ] + } + ], + "prompt_number": 22 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.19 pageno : 427" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import math \n", + "\n", + "# Variables \n", + "T1 = 363. #K\n", + "T2 = 373. #K\n", + "P1s = 70.11 #kPa\n", + "P2s = 101.3 #kPa\n", + "R = 8.314 #kJ/kmolK\n", + "\n", + "\n", + "# Calculation \n", + "# ln(P2s / P1s) = Hv / R * (1/T1 - 1/T2) \n", + "Hv = (math.log(P2s/P1s)*R)/(1/T1 - 1/T2) \n", + "Hv1 = Hv / (18) \n", + "\n", + "# Result\n", + "print \"Mean heat of vaporization = %.f\"%Hv1,\"kJ/kg\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Mean heat of vaporization = 2302 kJ/kg\n" + ] + } + ], + "prompt_number": 23 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.20 pageno : 427" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "T = 273.15 - 30 \n", + "R = 8.314 #K\n", + "\n", + "# Calculation \n", + "#lnPs = 14.2410 - 2137.72 / (T-26.72)\n", + "#dlnPs/dT = Hv / RT2\n", + "Hv = 2137.72 * R * T**2 / ( T - 26.72 )**2 \n", + "\n", + "# Result\n", + "print \"Heat of vaporization = %.2f\"%Hv,\"kJ/kmol\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Heat of vaporization = 22432.33 kJ/kmol\n" + ] + } + ], + "prompt_number": 24 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.21 pageno : 427" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "Hv1 = 2256. #kJ/kg\n", + "T1 = 373. #K\n", + "T2 = 473. #K\n", + "Tc = 647. #K\n", + "\n", + "# Calculation \n", + "Tr1 = T1 / Tc \n", + "Tr2 = T2 / Tc \n", + "#Hv2 / Hv1 = ((1-Tr2)/(1-Tr1))**0.38\n", + "Hv2 = Hv1*(((1-Tr2)/(1-Tr1))**0.38) \n", + "\n", + "# Result\n", + "print \"Latent heat of vaporization of water at 473K = %d\"%Hv2,\"kJ/kg\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Latent heat of vaporization of water at 473K = 1898 kJ/kg\n" + ] + } + ], + "prompt_number": 25 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.22 pageno : 428" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import math \n", + "from scipy.integrate import quad \n", + "\n", + "\n", + "# Variables \n", + "#Cp = a + b*T\n", + "\n", + "T1 = 293.15 #K\n", + "Cp1 = 131.05 #J/molK\n", + "T2 = 323. #K\n", + "Cp2 = 138.04 #J/molK\n", + "\n", + "\n", + "# Calculation \n", + "#a + 293*b = 131.05\n", + "#a + 323*b = 138.04\n", + "b = (Cp1 - Cp2)/(T1 - T2) \n", + "a = Cp1 - b * T1 \n", + "\n", + "#Cp = 62.781 + 0.233*T\n", + "# Hvb / Tb = 36.63 + 8.31lnTb\n", + "Tb = 273.15 + 80.1 #K\n", + "\n", + "Hvb = (36.63 + 8.31*math.log(Tb)) * Tb \n", + "m = 100. #kg\n", + "\n", + "def f7(T): \n", + "\t return 62.781 + 0.233*T\n", + "\n", + "k = quad(f7,T1,Tb)[0]\n", + "\n", + "H = m*(10.**3) * ( k)/78.048 + m*(10.**3) * Hvb/78.048\n", + "\n", + "# Result\n", + "print \"Heat required = %.3e J\" %H\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Heat required = 4.928e+07 J\n" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.23 pageno : 430" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "P = 10. #kPa\n", + "T1 = 323.15 #K\n", + "T2 = 373.15 #K\n", + "T = 358.15 #K\n", + "H1 = 2592.6 #kJ/kg\n", + "H2 = 2687.5 #kJ/kg\n", + "\n", + "\n", + "# Calculation \n", + "#H by interpolation,\n", + "H = H1 + ((H2 - H1)/(T2 - T1))*(T - T1) \n", + "Hl = 697.061 #kJ/kg\n", + "Hg = 2762. #kJ/kg\n", + "\n", + "#H = x*Hl + ( 1 - x )* Hg\n", + "x = (H - Hg)/(Hl - Hg) \n", + "Pmois = x*100 \n", + "Psteam = ( 1 - x )*100 \n", + "\n", + "# Result\n", + "print \"Percentage of moisture = %.f\"%Pmois,\"%\"\n", + "print \"Percentage of dry saturated steam = %.f\"%Psteam,\"%\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Percentage of moisture = 5 %\n", + "Percentage of dry saturated steam = 95 %\n" + ] + } + ], + "prompt_number": 27 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.24 pageno : 430" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "P = 3500. #kPa\n", + "T = 673.15 #K\n", + "SV = 0.08453 #m**3/kg\n", + "Vcondensed = 1/2. \n", + "m = 100. #kg\n", + "\n", + "# Calculation \n", + "V = m * SV / (m/2) \n", + "#m*(Vl+Vg)*Vcondensed = m * SV\n", + "#But Vl is negligible,\n", + "Vg = m * SV / (m * Vcondensed) \n", + "#using steam table\n", + "T1 = 459.5 #K\n", + "P1 = 1158. #kPa\n", + "\n", + "#internal energy of superheated steam from steam table\n", + "I = 2928.4 #kJ/kg\n", + "U1 = m * I \n", + "Ul = 790. #kJ/kg\n", + "Ug = 2585.9 #kJ/kg\n", + "U2 = m*Vcondensed*Ul + m*(1-Vcondensed)*Ug \n", + "Q = U2 - U1 \n", + "\n", + "# Result\n", + "print \"The amount of heat removed fromt he system = \",Q,\"kJ\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The amount of heat removed fromt he system = -124045.0 kJ\n" + ] + } + ], + "prompt_number": 25 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.25 pageno : 433" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "m = 1000. #kg/h ( basis mass of 10% NaOH solution )\n", + "Pfeed = 10. #%\n", + "Ppro = 50. #(Percentage NaOH in product)\n", + "\n", + "\n", + "# Calculation \n", + "#Taking NaOH balance,P being the weight of the product\n", + "P = Pfeed * m / Ppro \n", + "\n", + "#W be the weight of water evaporized\n", + "W = m - P \n", + "\n", + "#step1 - cooling 1000kg/h of 10% solution from 305K to 298K\n", + "T1 = 305. #K\n", + "T2 = 298. #K\n", + "Cliq = 3.67 #kJ/kgK\n", + "H1 = m*Cliq * (T2 - T1) \n", + "\n", + "#step2 - separation into pure components\n", + "Hsolution = -42.85 #kJ/mol\n", + "H2 = -Pfeed * m *1000 *Hsolution/ (40*100) \n", + "\n", + "#step3 - W kg water is converted to water vapour\n", + "Hvap = 2442.5 #kJ/kg\n", + "H3 = W * Hvap \n", + "\n", + "#step4 - water vapour at 298K is heated to 373.15K\n", + "Cvap = 1.884 #kJ/kgK\n", + "T3 = 373.15 #K\n", + "H4 = W * Cvap * ( T3 - T2 ) \n", + "\n", + "#step5 - formation of 200kg of 50% NaOH solution at 298K\n", + "Hsolu = -25.89 #kJ/mol\n", + "H5 = Pfeed * m *1000 *Hsolu/ (40*100) \n", + "\n", + "#step6 - Heating the solution from 298K to 380K\n", + "Csolu = 3.34 #kJ/kg\n", + "T4 = 380. #K\n", + "H6 = P * Csolu * (T4 - T2) \n", + "Htotal = H1 + H2 + H3 + H4 + H5 + H6 \n", + "\n", + "# Result\n", + "print \"The enthalpy change accompanying the complete process = %d\"%Htotal,\"kJ\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The enthalpy change accompanying the complete process = 2138752 kJ\n" + ] + } + ], + "prompt_number": 28 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.26 page no : 435" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "# variables \n", + "Nwater = 0.8 #moles\n", + "Nethanol = 0.2 #moles\n", + "T = 323. #K\n", + "Cwater = 4.18*10**3 #J/kgK\n", + "Cethanol = 2.58*10**3 #J/kgK\n", + "Hmixing1 = -758. #J/mol ( at 298K )\n", + "Hmixing2 = -415. #J/mol ( at 323K )\n", + "T1 = 298. #K\n", + "T2 = 523. #K\n", + "\n", + "# Calculation \n", + "#step1 - 0.8 mol of water is cooled from 323 K to 298K\n", + "H1 = Nwater * 18 * Cwater * ( T1 - T )/ 1000 \n", + "\n", + "#step2 - 0.2 mol ethanol cooled from 323K to 298K\n", + "H2 = Nethanol * 46 * Cethanol * ( T1 - T )/1000 \n", + "\n", + "#step3 - 0.8 mol water and 0.2 mol ethanol are mixed together,\n", + "H3 = Hmixing1 \n", + "\n", + "#step4 solution is heated to 323K, H4 = Cpm * (T - T1)\n", + "#Hmixing2 = H1 + H2 + H3 + H4\n", + "H4 = Hmixing2 - H1 - H2 - H3 \n", + "Cpm = H4 / ( T - T1 ) \n", + "\n", + "# Result\n", + "print \"The mean heat capacity of a 20 percent solution = %.2f\"%Cpm,\"J/molK\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The mean heat capacity of a 20 percent solution = 97.65 J/molK\n" + ] + } + ], + "prompt_number": 30 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.27 page no : 437" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "F = 1000. #kg/h\n", + "H1 = 116.3 #kJ/kg ( enthalpy of feed solution - 10% NaOH, 305 K )\n", + "H2 = 560.57 #kJ/kg ( enthalpy of thick liquor - 50% NaOH, 380 K )\n", + "Hsteam = 2676. #kJ/kg ( 1atm , 373.15K )\n", + "\n", + "#by doing material balances,\n", + "P = 200. #kg/h\n", + "mvap = 800. #kg/h\n", + "\n", + "# Calculation \n", + "#Enthalpy balance gives, F*H1 + Q = mvap*Hsteam + P*H2\n", + "Q = (mvap*Hsteam + P*H2)-F*H1 \n", + "\n", + "# Result\n", + "print \"Heat to be supplied = \",Q,\"kJ/h\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Heat to be supplied = 2136614.0 kJ/h\n" + ] + } + ], + "prompt_number": 31 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.28 pageno : 439" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "U2 = 0.35*10**3 #kJ\n", + "U1 = 0.25*10**3 #kJ\n", + "#since the tank is rigid the volume does not change during heating, Under constant volume, the change in the internal energy is equal to the heat supplied\n", + "\n", + "# Calculation \n", + "Q = U2 - U1 \n", + "\n", + "# Result\n", + "print \"Heat transferred to the air = \",Q,\"kJ\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Heat transferred to the air = 100.0 kJ\n" + ] + } + ], + "prompt_number": 29 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.29 pageno : 439" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "W = -2.25*745.7 #W ( work done on the system and 1hp = 745.7W)\n", + "Q = -3400. #kJ/h ( Heat transferred to the surrounding )\n", + "\n", + "# Calculation \n", + "U = Q*1000/3600 - W \n", + "\n", + "# Result\n", + "print \"Rise in the Internal energy of the system = %.3f\"%U,\"J/s\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Rise in the Internal energy of the system = 733.381 J/s\n" + ] + } + ], + "prompt_number": 32 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.30 pageno : 440" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "#2Fe + 3/2O2 = Fe2O3\n", + "Hliberated = 831.08 #kJ\n", + "\n", + "# Calculation \n", + "Q = -Hliberated*1000 \n", + "\n", + "# Result\n", + "print \"Q = \",Q,\"J\"\n", + "\n", + "#P(V) = (n)RT\n", + "#W = P(V) = (n)RT\n", + "n = -1.5 \n", + "R = 8.314 \n", + "T = 298. #K\n", + "W = (n) * R * T \n", + "print \"W = %.1f\"%W,\"J\"\n", + "U = Q - W \n", + "print \"U = %.5e\"%U,\"J\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Q = -831080.0 J\n", + "W = -3716.4 J\n", + "U = -8.27364e+05 J\n" + ] + } + ], + "prompt_number": 34 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.31 pageno : 440" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "Vgas = 0.09 #m**3\n", + "Vliq = 0.01 #m**3\n", + "SVliq = 1.061*10**-3 #m**3/kg\n", + "SVvap = 0.8857 #m**3/kg\n", + "\n", + "# Calculation \n", + "mvap = Vgas / SVvap \n", + "mliq = Vliq / SVliq \n", + "Ul = 504.5 #kJ/kg\n", + "Ug = 2529.5 #kJ/kg\n", + "U1 = Ul * mliq + Ug * mvap \n", + "SVtotal = (Vgas + Vliq)/(mvap + mliq) \n", + "#using steam table , these value of specific volume corresponds to\n", + "# pressure of 148.6bar and internal energy of 2464.6kJ/kg\n", + "U = 2464. #kJ/kg\n", + "Utotal = U * (mvap + mliq) \n", + "#Utotal - U1 = Q - W,but W = o, hence, \n", + "Q = Utotal - U1 \n", + "\n", + "# Result\n", + "print \"Heat to be added = %.f\"%Q,\"kJ\"\n", + "\n", + "\n", + "# note: answer may vary because of rounding error" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Heat to be added = 18462 kJ\n" + ] + } + ], + "prompt_number": 35 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.32 pageno : 443" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "m = 10. #kg(air)\n", + "N = m / 29 #kmol\n", + "P1 = 100. #kPa\n", + "T1 = 300. #K\n", + "R = 8.314 \n", + "\n", + "# Calculation \n", + "V1 = N * R * T1 / P1 \n", + "V2 = V1 \n", + "T2 = 600. #K\n", + "Cv = 20.785 #kJ/kmolK\n", + "Cp = 29.099 #kJ/kmolK\n", + "U = N * Cv * (T2 - T1) \n", + "Q = U \n", + "W = Q - U \n", + "H = U + N * R * ( T2 - T1 ) \n", + "\n", + "# Result\n", + "print \"(a)Change in internal energy at constant volume = %d\"%U,\"kJ\"\n", + "print \"heat supplied at constant volume = %d\"%Q,\"kJ\"\n", + "print \"Work done at constant volume = \",W,\"kJ\"\n", + "print \"Change in Enthalpy at constant volume = %d\"%H,\"kJ\"\n", + "P2 = P1 \n", + "H2 = N * Cp * ( T2 - T1 ) \n", + "Q2 = H2 \n", + "U2 = H2 - N * R * (T2 - T1) \n", + "W2 = Q2 - U2 \n", + "print \"(b)Change in internal energy at constant Pressure = %d\"%U2,\"kJ\"\n", + "print \"heat supplied at constant Pressure = %d\"%Q2,\"kJ\"\n", + "print \"Work done at constant Pressure = %d\"%W2,\"kJ\"\n", + "print \"Change in Enthalpy at constant Pressure = %d\"%H2,\"kJ\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Change in internal energy at constant volume = 2150 kJ\n", + "heat supplied at constant volume = 2150 kJ\n", + "Work done at constant volume = 0.0 kJ\n", + "Change in Enthalpy at constant volume = 3010 kJ\n", + "(b)Change in internal energy at constant Pressure = 2150 kJ\n", + "heat supplied at constant Pressure = 3010 kJ\n", + "Work done at constant Pressure = 860 kJ\n", + "Change in Enthalpy at constant Pressure = 3010 kJ\n" + ] + } + ], + "prompt_number": 36 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.33 pageno : 444" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "Cp = 29.3 #kJ/kmol\n", + "R = 8.314 \n", + "Cv = Cp - R \n", + "T1 = 300. #K\n", + "P1 = 1. #bar\n", + "P2 = 2. #bar\n", + "\n", + "# Calculation \n", + "#step1 - Volume remains constant, therefore the work done is\n", + "# zero and heat supplied is Cv, Also T2/T1 = P2/P1\n", + "T2 = P2 * T1 / P1 \n", + "Q1 = Cv * ( T2 - T1 ) \n", + "W1 = 0 \n", + "\n", + "# Result\n", + "print \"Work done at constant volume = \",W1,\"kJ\"\n", + "print \"Heat supplied at constant volume = \",Q1,\"kJ\"\n", + "\n", + "#step2 - Process is abdiabatic\n", + "Q2 = 0 \n", + "r = 1.4 \n", + "T3 = T2 * (( P1 / P2 )**((r - 1)/r)) \n", + "W2 = Cv * ( T2 - T3 ) \n", + "\n", + "print \"Work done in adiabatic process = %.1f\"%W2,\"kJ\"\n", + "print \"Heat supplied in adiabatic process = \",Q2,\"kJ\"\n", + "\n", + "#step3 - process is isobaric\n", + "Q3 = Cp * (T1 - T3) \n", + "U3 = Cv * (T1 - T3) \n", + "W3 = Q3 - U3 \n", + "print \"Work done at constant pressure = %.2f\"%W3,\"kJ\"\n", + "print \"Heat supplied at constant pressure = %.1f\"%Q3,\"kJ\"\n", + "\n", + "\n", + "# Note : Answers in book is wrong. while calculating heat supplied i.e. Cv(T2-T1), value of Cv is been taken wrongly." + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Work done at constant volume = 0 kJ\n", + "Heat supplied at constant volume = 6295.8 kJ\n", + "Work done in adiabatic process = 2262.3 kJ\n", + "Heat supplied in adiabatic process = 0 kJ\n", + "Work done at constant pressure = -1597.96 kJ\n", + "Heat supplied at constant pressure = -5631.5 kJ\n" + ] + } + ], + "prompt_number": 11 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.34 pageno : 445" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import math \n", + "\n", + "# Variables \n", + "P1 = 5. #bar\n", + "P2 = 4. #bar\n", + "T1 = 600. #K\n", + "V = 0.1 #m**3\n", + "T2 = 400. #K\n", + "T = 298. #K\n", + "Cp = 30. #J/molK\n", + "\n", + "#step1 - isothermal condition\n", + "U1 = 0 \n", + "H1 = 0 \n", + "P = 1. #bar\n", + "R = 8.314 \n", + "\n", + "# Calculation \n", + "W1 = R*T1*math.log(P1/P2) \n", + "Q1 = W1 \n", + "\n", + "# Result\n", + "print \"(a)Change in the internal energy in isothermal condition = \",U1,\"kJ/kmol\"\n", + "print \"Change in the enthalpy energy in isothermal condition = \",H1,\"kJ/kmol\"\n", + "print \"Work done in isothermal condition = %.2f\"%W1,\"kJ/kmol\"\n", + "print \"Heat supplied in isothermal condition = %.2f\"%Q1,\"kJ/kmol\"\n", + "N = round(P * (1.01325 * 10**5) * V / ( R * T ),2) # answer slightly different because of rouding error.\n", + "Cv = Cp - R \n", + "U2 = Cv * (T2 - T)*N #Answer differes due to slighlty different value of N\n", + "H2 = Cp * (T2 - T)*N #Answer differes due to slighlty different value of N\n", + "W2 = 0 \n", + "Q2 = U2 + W2 \n", + "print \n", + "print \"\\n(b)Change in the internal energy at constant volume condition = %d\"%U2,\"J\"\n", + "print \"Change in the enthalpy energy at constant volume condition = %d\"%H2,\"kJ/kmol\"\n", + "print \"Work done at constant volume condition = \",W2,\"kJ/kmol\"\n", + "print \"Heat supplied at constant volume condition = %d\"%Q2,\"kJ/kmol\"\n", + "\n", + "# note : answer varies because of rounding error." + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Change in the internal energy in isothermal condition = 0 kJ/kmol\n", + "Change in the enthalpy energy in isothermal condition = 0 kJ/kmol\n", + "Work done in isothermal condition = 1113.13 kJ/kmol\n", + "Heat supplied in isothermal condition = 1113.13 kJ/kmol\n", + "\n", + "\n", + "(b)Change in the internal energy at constant volume condition = 9046 J\n", + "Change in the enthalpy energy at constant volume condition = 12515 kJ/kmol\n", + "Work done at constant volume condition = 0 kJ/kmol\n", + "Heat supplied at constant volume condition = 9046 kJ/kmol\n" + ] + } + ], + "prompt_number": 19 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.35 pageno : 448" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "m = 1. #kg\n", + "u2 = 0.5 #m/s\n", + "u1 = 60. #m/s\n", + "H = -3000. #kJ/kg\n", + "\n", + "# Calculation \n", + "#KE = (u**2)/2\n", + "KE = ((u2 ** 2) - (u1**2))/2000 \n", + "g = 9.81 #m/s**2\n", + "Z1 = 7.5 #m\n", + "Z2 = 2. #m\n", + "\n", + "#PE = g * (Z)\n", + "PE = g * (Z2 - Z1)/1000 \n", + "W = 800. #kJ/kg\n", + "Q = H + PE + KE + W \n", + "\n", + "# Result\n", + "print \"Heat removed from the fluid = %.2f\"%Q,\"kJ/kg\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Heat removed from the fluid = -2201.85 kJ/kg\n" + ] + } + ], + "prompt_number": 39 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.37 pageno : 449" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "g = 9.81 #m/s**2\n", + "z = 55. \n", + "PE = g * z \n", + "KE = 0. \n", + "T2 = 288. #K\n", + "f = 1.5*10**-2 #m**3/min\n", + "D = 1000. #kg/m**3\n", + "m = f * D \n", + "Qsupp = 500. #kJ/min\n", + "Qlost = 400. #kJ/min\n", + "\n", + "# Calculation \n", + "Qnet = (Qsupp - Qlost) * D / m \n", + "W = 2*745.7 #W\n", + "Ws = -W * 0.6 / (m/60) \n", + "H = Qnet - Ws - PE - KE \n", + "Cp = 4200. \n", + "T1 = H / Cp \n", + "T = T1 + T2 \n", + "\n", + "# Result\n", + "print \"The temperature of exit water = %.2f\"%T,\"K\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The temperature of exit water = 290.31 K\n" + ] + } + ], + "prompt_number": 40 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.38 pageno : 450" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "m = 1000. #kg/h (dried product)\n", + "\n", + "# S be the amount of dry solid in the product stream \n", + "Pmoisture1 = 4. #%\n", + "Pmoisture2 = 0.2 #%\n", + "P = 1.\n", + "S = m *(1 - P/1000) \n", + "\n", + "# Calculation \n", + "X1 = Pmoisture1/(100 - Pmoisture1) \n", + "X2 = Pmoisture2/(100 - Pmoisture2) \n", + "\n", + "#let G be the weight of dry air in the air stream \n", + "Y1 = 0.01 #kg water/kg dry solid\n", + "Cp = 1.507 \n", + "Cw = 4.2 \n", + "T1 = 298. #K\n", + "T = 273. #K\n", + "T2 = 333. #K\n", + "Tg1 = 363. #K\n", + "Tg2 = 305. #K\n", + "\n", + "Hs1 = (Cp + X1 * Cw) * (T1 - T) \n", + "Hs2 = (Cp + X2 * Cw) * (T2 - T) \n", + "#Hg = Cs(Tg - To) + Y*L\n", + "#Cs = 1.005 + 1.884*Y\n", + "L = 2502.3 #kJ/kg dry air\n", + "Hg1 = (1.005 + 1.884 * Y1)*(Tg1 - T) + Y1 * L \n", + "Q = -40000. #kJ/h\n", + "\n", + "#Calculating for T2, Hg2 = 32.16 + 2562.59*Y \n", + "#change in enthalpy = Q\n", + "#H1 = S * Hs1 + G * HG1 = 37814.22 + 117.17G\n", + "#H2 = 100728.14 + G* (32.16 + 2561.59*Y)\n", + "#change in enthalpy = Q\n", + "#62913.92 + G *(-85.01 + 2561.59*Y) + 40000 = 0\n", + "#102913.92 + G *(-85.01 + 2561.59*Y) = 0 (1)\n", + "#moisture balance, S*X1 + G*Y1 = S*X2 + G*Y2\n", + "#G*(Y-0.01) = 39.62 (2)\n", + "#solving simultaneously ( 1 ) and ( 2 ), \n", + "Gdry = 3443. #kg/h\n", + "G = Gdry*(1 + Y1) \n", + "\n", + "# Result\n", + "print \"Air requirement = \",G,\"kg/h\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Air requirement = 3477.43 kg/h\n" + ] + } + ], + "prompt_number": 39 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.39 pageno : 452" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "m = 1000. #kg/h ( feed solution )\n", + "\n", + "#F - mass of feed distilled, W - mass of the bottom product, D - mass of the distillate, xf, xd and xw - weight fraction of actone in feed, distillate and residue resp_\n", + "#total balance, F = D + W\n", + "#Acetone balance, F*xf = D*xd + w*xw\n", + "F = 1000 \n", + "xf = 0.10 \n", + "xd = 0.9 \n", + "xw = 0.01 \n", + "\n", + "# Calculation \n", + "#substituting in above equations,\n", + "D = F * (xf - xw) / (xd - xw) \n", + "W = F - D \n", + "R = 8 \n", + "L = R * D \n", + "#material balance around the condenser,G vapour reaching the condenser\n", + "G = L + D \n", + "Td = 332. #K\n", + "T2 = 300. #K\n", + "Tw = 370. #K\n", + "Tf = 340. #K\n", + "Lacetone1 = 620. #kJ/kg\n", + "Lwater1 = 2500. #kJ/kg\n", + "Ld = xd * Lacetone1 + (1 - xd) * Lwater1 \n", + "Cpacetone = 2.2 #kJ/kgK\n", + "Cpwater = 4.2 #kJ/kgK\n", + "Cp = xd * Cpacetone + (1-xd)*Cpwater \n", + "H = Ld + Cp * ( Td - T2 ) \n", + "Cpc = 4.2 #kJ/kg\n", + "Tc = 30. #K ( change in temperature allowable for cooling water )\n", + "m = G * H / ( Cpc * Tc ) \n", + "\n", + "# Result\n", + "print \"(a)The circulation rate of cooling water = %2f\"%m,\"kg/h\"\n", + "Qc = G * H \n", + "Hd = 0. \n", + "Hw = (xw * Cpacetone + (1-xw)*Cpwater)*(Tw - T2) \n", + "Hf = (xf * Cpacetone + (1-xf)*Cpwater)*(Tf - T2) \n", + "Qb = D * Hd + W * Hw + Qc - F * Hf \n", + "Hcondensation = 2730. #kJ/kg\n", + "msteam = Qb/Hcondensation \n", + "print \"(b)Amount of steam supplied = %.2f\"%msteam,\"kg/h\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)The circulation rate of cooling water = 6391.011236 kg/h\n", + "(b)Amount of steam supplied = 332.70 kg/h\n" + ] + } + ], + "prompt_number": 41 + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/Stoichiometry_And_Process_Calculations/ch12.ipynb b/Stoichiometry_And_Process_Calculations/ch12.ipynb new file mode 100755 index 00000000..0f35302b --- /dev/null +++ b/Stoichiometry_And_Process_Calculations/ch12.ipynb @@ -0,0 +1,1025 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "Chapter 12 : Energy Balance Thermochemistry" + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 12.1 pageno : 475" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "N = 100. #mol gas mixture burned\n", + "\n", + "#CO(g) + 1/2 O2(g) = CO2 - Hr1 = - 282.91kJ/mol\n", + "#H2(g) + 1/2 O2(g) = H2O - Hr2 = - 241.83kJ/mol\n", + "Hr1 = - 282.91 #kJ/mol\n", + "Hr2 = - 241.83 #kJ/mol\n", + "Nco1 = 20. \n", + "Nh21 = 30. \n", + "Nn21 = 50. \n", + "\n", + "# Calculation \n", + "Htotal = Nco1*Hr1 + Nh21*Hr2 \n", + "\n", + "# Result\n", + "print \"the amount of heat liberated on the complete combustion of 100mol of the gas mixture = \",-Htotal,\"kJ\"\n", + "Ncoreac = Nco1 * 0.9 \n", + "Nh2reac = Nh21 * 0.8 \n", + "Htotal1 = Ncoreac*Hr1 + Nh2reac*Hr2 \n", + "print \"the amount of heat liberated if only 90% of CO and 80% of H2 react of 100mol of the gas mixture = \",-Htotal1,\"kJ\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "the amount of heat liberated on the complete combustion of 100mol of the gas mixture = 12913.1 kJ\n", + "the amount of heat liberated if only 90% of CO and 80% of H2 react of 100mol of the gas mixture = 10896.3 kJ\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 12.2 pageno : 477" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "#C(s) + 2H2(g) = CH4(g) Hf = ?\n", + "Hc = -393.51 #kJ/mol\n", + "Hh2 = -285.84 #kJ/mol\n", + "Hch4 = - 890.4 #kJ/mol\n", + "\n", + "# Calculation \n", + "#heat of reaction can be calculated from the heat of combustion data \n", + "# using following equation, the heat of reaction is the sum of the heat of combustion of all the reactants in the desired reaction minus the sum of the heat of combustion of all the products of the desired reaction. Here the reactants are one mole of Carbon and two moles hydrogen, and the product is one mole of methane,there heat of reaction is\n", + "Hf = 1 * Hc + 2 * Hh2 - 1 * Hch4 \n", + "\n", + "# Result\n", + "print \"Heat of formation of methane = \",Hf,\"kJ\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Heat of formation of methane = -74.79 kJ\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 12.3 pageno : 478" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "m = 1. #kg of coal burned\n", + "xc = 0.7 \n", + "xh2 = 0.055 \n", + "xn2 = 0.015 \n", + "xs = 0.03 \n", + "xo = 0.13 \n", + "xash = 0.07 \n", + "Hvap = 2370. #kJ/kg\n", + "C = 29000. #kJ/kg\n", + "\n", + "# Calculation \n", + "Nh2 = xh2 * m / 2.016 \n", + "Nwater = Nh2 # ( amount of water formed )\n", + "mwater = Nwater * 18.016 \n", + "Hreq = mwater * Hvap \n", + "Hnet = C - Hreq \n", + "\n", + "# Result\n", + "print \"Net heating value of coal = %.1f\"%Hnet,\"kJ/kg\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Net heating value of coal = 27835.1 kJ/kg\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 12.4 pageno : 479" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "#C2H5OH(l) + CH3COOH(l) = C2H5COOCH3(l) + H2O(l) H = ?\n", + "Hc2h5oh = -1366.91 #kJ/mol\n", + "Hch3cooh = -871.69 #kJ/mol\n", + "Hc2h5cooch3 = -2274.48 #kJ/mol\n", + "\n", + "# Calculation \n", + "#to calculate heat of reaction from the heat of combustion data , \n", + "#Hreac = Hreac - Hprod\n", + "Hreac = Hc2h5oh + Hch3cooh - Hc2h5cooch3 \n", + "\n", + "# Result\n", + "print \"Heat of reaction for the esterification of ethyl alcohol with acetic acid = \",Hreac,\"kJ\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Heat of reaction for the esterification of ethyl alcohol with acetic acid = 35.88 kJ\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 12.5 pageno : 479" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "#C2H4(g) + H2O(g) = C2H5OH(g)\n", + "#2CO2(g) + 3H2O(l) = C2H5OH(l) + 3O2(g) H = 1366.91kJ (A)\n", + "Hc2h4 = -1410.99 #kJ/mol\n", + "Hvap = 44.04 #kJ/mol\n", + "Hc2h5oh = 42.37 #kJ/mol\n", + "#C2H4(g) + 3H2O(l) = C2H5OH(l) + 3O2(g) H = -1410.99kJ (B)\n", + "#H2O(l) = H2O(g) H = 44.04kJ (C)\n", + "#C2H5OH(l) = C2H5OH(g) H = 42.37kJ (D)\n", + "#A + B + D - C gives the required reaction\n", + "Ha = 1366.91 #kJ\n", + "Hb = -1410.99 #kJ\n", + "Hc = 44.04 #kJ\n", + "Hd = 42.37 #kJ\n", + "\n", + "# Calculation \n", + "Hreac = Ha + Hb + Hd - Hc \n", + "\n", + "# Result\n", + "print \"The heat of reaction = \",Hreac,\"kJ\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The heat of reaction = -45.75 kJ\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 12.6 pageno : 480" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "#C2H5(g) + 5/2O2(g) = 2CO2(g) + H2O(l) H1 = -1299.6kJ (A)\n", + "#C(s) + O2(g) = CO2(g) H2 = -393.51kJ (B)\n", + "#H2(g) + 1/2O2(g) = H2O(l) H3 = -285.84kJ (C)\n", + "#2C(s) + H2(g) = C2H2(g) H = ?\n", + "H1 = -1299.6 #kJ\n", + "H2 = -393.51 #kJ\n", + "H3 = -285.84 #kJ\n", + "\n", + "# Calculation \n", + "Hreac = 2 * H2 + H3 - H1 \n", + "\n", + "# Result\n", + "print \"Heat of formation of acetylene = \",Hreac,\"kJ\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Heat of formation of acetylene = 226.74 kJ\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 12.7 pageno : 480" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "m = 100. #kg of pyrites charged\n", + "xfes2in = 0.8 \n", + "xganguein = 0.2 \n", + "xfes2out = 0.05 \n", + "\n", + "# Calculation \n", + "#let x be the FeS2 in the feed, then, Fe2O3 = (80 - x)*159.69 / (119.98*2) \n", + "#and gangue = 20, total = 73.24 + 0.3345, be FeS2 is only 5 % in the product, hence\n", + "x = 0.05 * 73.24 / (1 - 0.05*0.3345) \n", + "mfes2reacted = m*xfes2in - x \n", + "#4FeS2 + 11O2 = 2Fe2O3 + 8SO2\n", + "Hfes2 = -178.02 #kJ/mol\n", + "Hfe2o3 = -822.71 #kJ/mol\n", + "Hso2 = -296.9 #kJ/mol\n", + "Hreac = 2 * Hfe2o3 + 8 * Hso2 - 4 * Hfes2 \n", + "N = mfes2reacted *1000/ 119.98 \n", + "H = Hreac * N / 4 \n", + "H1 = H/m #(heat of reaction per kg of coal burnt)\n", + "\n", + "# Result\n", + "print \"Heat of reaction per 1 kg of coal burned = %.3e\"%H1,\"kJ\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Heat of reaction per 1 kg of coal burned = -5.258e+03 kJ\n" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 12.8 pageno : 481" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "#CH3OH(l) + 3/2O2(g) = CO2(g) + 2H2O(l) H = -726.55kJ\n", + "H1 = -726.55 #kJ\n", + "Hco2 = -393.51 #kJ/mol\n", + "Hh2o = -285.84 #kJ/mol\n", + "\n", + "# Calculation \n", + "Hch3oh = Hco2 + 2 * Hh2o - H1 \n", + "\n", + "# Result\n", + "print \"Heat of formation of liquid methanol = \",Hch3oh,\"kJ\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Heat of formation of liquid methanol = -238.64 kJ\n" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 12.9 pageno : 482" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "N = 100. #mol fuel gas\n", + "Nco = 21. \n", + "Nh2 = 15.6 \n", + "Nco2 = 9.0 \n", + "Nch4 = 2. \n", + "Nc2h4 = 0.4 \n", + "Nn2 = 52. \n", + "Hco = 282.99 #kJ/mol ( heat of combustion )\n", + "Hh2 = 285.84 #kJ/mol ( heat of combustion )\n", + "Hch4 = 890.4 #kJ/mol ( heat of combustion )\n", + "Hc2h4 = 1410.99 #kJ/mol ( heat of combustion )\n", + "Hvap = 44.04 #kJ/mol\n", + "\n", + "# Calculation \n", + "H = round(Nco * Hco + Nh2 * Hh2 + Nch4*Hch4 + Nc2h4*Hc2h4) #kJ\n", + "V = round(N * 22.4143/1000,2) \n", + "H1 = round(H / V) #kJ/m**3\n", + "\n", + "#on combustion, 1 mol hydrogen gives 1 mol of water, 1 mol of \n", + "# methane gives 2 mol of water and 1 mol of ethylene gives 2 moles of water\n", + "Nwater = Nh2 + 2 * Nch4 + 2 * Nc2h4 \n", + "Hvap1 = round(Hvap * Nwater,2)\n", + "Hnet = H1 - Hvap1 \n", + "\n", + "# Result\n", + "print \"Net heating value of the fuel = %.2f\"%Hnet,\"kJ\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Net heating value of the fuel = 4792.58 kJ\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 12.10 pageno : 483" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "# C5H12(g) + 8O2(g) = 5CO2(g) + 6H20(l)\n", + "Hfco2 = -393.51 #kJ\n", + "Hfh2o = - 241.826 #kJ\n", + "Hfc5h12 = -146.4 #kJ\n", + "Hvap = 43.967 #kJ/mol\n", + "\n", + "# Calculation \n", + "H1 = 6*Hfh2o +5*Hfco2 - Hfc5h12 \n", + "H2 = 6 * (-Hvap) \n", + "Hreac = H1 + H2 \n", + "# Result\n", + "print \"heat of reaction = \",Hreac,\"kJ\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "heat of reaction = -3535.908 kJ\n" + ] + } + ], + "prompt_number": 10 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 12.11 pageno : 484" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "m = 1. #kg of oil burned\n", + "mc = 0.9 #kg\n", + "mh2 = 0.1 #kg\n", + "\n", + "# Calculation \n", + "Mc = mc / 12 #kmol\n", + "#C(s) + O2(g) = CO2(g)\n", + "Nh2 = mh2 / 2.016 #kmol\n", + "\n", + "#change in the no. of gaseous components accompanying the \n", + "#combustion of 1 mole of hydrogen in liquid state is -1/2 mol, therefore for Nh2 mol\n", + "R = 8.314 \n", + "T = 298. #K\n", + "x = Nh2 * R * T / (-2) \n", + "Qv = -43000 #kJ/kg\n", + "Qp = Qv + x \n", + "\n", + "# Result\n", + "print \"the constant pressure heat of combustion = %.1f\"%Qp,\"kJ/kg\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "the constant pressure heat of combustion = -43061.4 kJ/kg\n" + ] + } + ], + "prompt_number": 11 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 12.12 pageno : 487" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "#1 - N2, 2 - H2, 3 - NH3\n", + "a1 = 27.31 \n", + "a2 = 29.09 \n", + "a3 = 25.48 \n", + "b1 = 5.2335*10**-3 \n", + "b2 = -8.374*10**-4 \n", + "b3 = 36.89 * 10**-3 \n", + "c1 = -4.1868 * 10**-9 \n", + "c2 = 2.0139*10**-6 \n", + "c3 = -6.305*10**-6 \n", + "H1 = -46191. #J\n", + "T1 = 298. #K\n", + "\n", + "# Calculation \n", + "#1/2 N2 + 3/2 H2 = NH3 H = -46.191kJ\n", + "#Ht = H + a*T + b*T**2 / 2+ c*T**3 / 3\n", + "#at 298, \n", + "a = a3 - a1 / 2 - 3 * a2 / 2 \n", + "b = b3 - b1 / 2 - 3 * b2 / 2 \n", + "c = c3 - c1 / 2 - 3 * c2 / 2 \n", + "H = H1 -a * T1 - b * (T1**2) / 2 - c * (T1**3) / 3 \n", + "T2 = 700. #K\n", + "H2 = H + a * T2 + b * (T2**2) / 2 + c * (T2**3) / 3 \n", + "\n", + "# Result\n", + "\n", + "print \"Heat of reaction at 700K = %d\"%H2,\"kJ\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Heat of reaction at 700K = -52835 kJ\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 12.13 pageno : 488" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#CO(g) + 2H2(g) = CH3OH(g)\n", + "import math \n", + "from scipy.integrate import quad \n", + "\n", + "# Variables\n", + "T1 = 298. #K\n", + "T2 = 1073. #K\n", + "#Cp(CH3OH) = 18.382 + 101.564 * 10**-3 * T - 28.683 * 10**-6 * T**2\n", + "#Cp(CO) = 28.068 + 4.631 * 10**-3 * T - 2.5773 * 10**4 * T**-2\n", + "#Cp(H2) = 27.012 + 3.509 * 10**-3 * T + 6.9006 * 10**4 * T**-2\n", + "#for reactants,\n", + "\n", + "# Calculation \n", + "def f1(T): \n", + "\t return 28.068 + 4.631 * 10**-3 * T - 2.5773 * 10**4 * T**-2\n", + "\n", + "def f2(T):\n", + " return 27.012 + 3.509 * 10**-3 * T + 6.9006 * 10**4 * T**-2\n", + "\n", + "H1 = quad(f1,T2,T1)[0] + 2 * quad(f2,T2,T1)[0]\n", + "\n", + "#for product,\n", + "\n", + "def f2(T): \n", + "\t return 18.382 + 101.564 * 10**-3 * T - 28.683 * 10**-6 * T**2\n", + "\n", + "H2 = quad(f2,T1,T2)[0]\n", + "\n", + "#H298 = Hproducts - Hreactants \n", + "#CO + 2H2 = CH3OH Ha1 = -238.64kJ\n", + "Ha1 = -238.64 #kJ\n", + "\n", + "#CH3OH(l) = CH3OH(g) Hvap = 37.98kJ\n", + "Hvap = 37.98 #kJ\n", + "\n", + "#CO(g) + 2H2(g) = CH3OH(g) Ha2 = -200.66kJ\n", + "Ha2 = Ha1 + Hvap #kJ\n", + "Hco = -110.6 #kJ/mol\n", + "H298 = Ha2 - (Hco) \n", + "Htotal = H1/1000 + H298 + H2/1000 \n", + "\n", + "# Result \n", + "print \"The heat of reaction at 773K = %.3f\"%Htotal,\"kJ/mol\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The heat of reaction at 773K = -103.497 kJ/mol\n" + ] + } + ], + "prompt_number": 13 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 12.14 pageno : 489" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "Nco = 1. #mol CO reacted\n", + "#CO + 1/2 O2 = CO2\n", + "No2 = Nco / 2 \n", + "Pexcess = 100. \n", + "\n", + "# Calculation \n", + "Nosupp = No2 * ( 1 + Pexcess / 100 ) #oxygen supplied\n", + "Nn2 = Nosupp * 79. / 21 \n", + "Nco2 = Nco \n", + "Noremain = Nosupp - No2 \n", + "T1 = 298. #K\n", + "T2 = 400. #K\n", + "Hr1 = -282.99 #kJ\n", + "T3 = 600. #K\n", + "SHco = 29.1 #J/molK\n", + "SHo2 = 29.7 #J/molK\n", + "SHn2 = 29.10 #J/molK\n", + "SHco2 = 41.45 #J/molK\n", + "H1 = (Nosupp * SHo2 + Nn2 * SHn2 + Nco * SHco) * (T1 - T2) #enthalpy of cooling of reactants from 298 to 400 K\n", + "H2 = (Nco2 * SHco2 + Nn2 * SHn2 + Noremain * SHo2) * (T3 - T1) #enthalpy of heating the products from 298K to 600K\n", + "H = H1/1000 + Hr1 + H2/1000 \n", + "\n", + "# Result\n", + "print \"Heat change at 600K = %.1f\"%H,\"kJ\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Heat change at 600K = -250.1 kJ\n" + ] + } + ], + "prompt_number": 14 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 12.15 pageno : 490" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "#CO(g) + H2O(g) = CO2(g) + H2(g) H298 = -41.190\n", + "T1 = 298. #K\n", + "Pconv = 75. #%\n", + "T2 = 800. #K\n", + "H298 = -41.190 #kJ\n", + "Hco = 30.35 #J/molK\n", + "Hco2 = 45.64 #J/molK\n", + "Hwater = 36. #J/molK\n", + "Hh2 = 29.3 #J/molK\n", + "Nco = 1. #mol\n", + "Nh2o = 1. #mol\n", + "\n", + "# Calculation \n", + "Ncofinal = Nco * (1 - Pconv/100) \n", + "Nwaterf = Ncofinal \n", + "Nco2final = Nco - Ncofinal \n", + "Nh2final = Nco2final \n", + "H2 = (Nco2final * Hco2 + Nh2final * Hh2 + Ncofinal * Hco + Nwaterf * Hwater) * (T2 - T1) \n", + "Hr1 = H298 * (Nco - Ncofinal) \n", + "Hr2 = Hr1 * 1000 + H2 \n", + "mh2 = Nh2final * 2.016 * 10**-3 #kg\n", + "#therfore for 1000k H2,\n", + "Hr = Hr2 * 1000 / (mh2 * 1000) #kJ\n", + "\n", + "# Result\n", + "print \"Amount of heat change for 1000kg of hydrogen produced = %.3e\"%Hr,\"kJ\"" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Amount of heat change for 1000kg of hydrogen produced = 3.736e+06 kJ\n" + ] + } + ], + "prompt_number": 15 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 12.16 pageno : 490" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "#CO2(g) + C(s) = 2CO(g) H1298 = 170kJ/mol\n", + "#O2(g) + 2C(s) = 2CO(g) H2298 = -221.2kJ/mol\n", + "T2 = 1298. #K\n", + "T1 = 298. #K\n", + "Hc = 0.02 #kJ/molK\n", + "Ho = 0.03 #kJ/molK\n", + "Hco = 0.03 #kJ/molK\n", + "Hco2 = 0.05 #kJ/molK\n", + "\n", + "\n", + "# Calculation \n", + "#let the flue gas contain x mol CO2 per mole of oxygen, product contains 2(1+x)mol CO. Nitrogen in reactant and product remain the same\n", + "#enthalpy of cooling xmol CO2, 1 mol O2 and 2 + xmol carbon from 1298 to 298K is given as, H1 = (Hco2 * x + Ho * 1 + Hc * (2 + x)) * (298 - 1298)\n", + "#H1 = (-70x - 70)kJ\n", + "#enthalpy of heating the product, H2 = 2 * ( 1 + x )* Hco * (1298 - 298)\n", + "#H2 = 60 + 60x kJ\n", + "#Hr = 170x - 221.2\n", + "#Htotal = 0 = H1 + H2 + Hr\n", + "x = (221.2 + 70 - 60)/(170 + 60 - 70) \n", + "\n", + "# Result\n", + "print \"moles of CO2 present per mol of oxygen in feed stream = \",x,\"mol\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "moles of CO2 present per mol of oxygen in feed stream = 1.445 mol\n" + ] + } + ], + "prompt_number": 16 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 12.17 pageno : 491" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "N = 100. #mol flue gas\n", + "#Carbon balance,\n", + "#x is the feed of methane, w is water in flue ga, y is the oxygen supplied\n", + "xco2 = 0.019 \n", + "xch2o = 0.117 \n", + "xo2 = 0.038 \n", + "xch4 = 0.826\n", + "\n", + "# Calculation \n", + "xc = xco2 + xch2o + xch4 \n", + "Nc = xc * N \n", + "Nch4i = Nc \n", + "#Hydrogen balance,\n", + "xh2 = xch2o + xch4*2 \n", + "w = 2 * (Nch4i) - xh2*N \n", + "#oxygen balance\n", + "No2s = (xco2 + xch2o/2 + xo2)*N + w/2 \n", + "y = No2s \n", + "T1 = 298. #K\n", + "T2 = 573. #K\n", + "T3 = 673. #K\n", + "\n", + "#oxygen cooled from 573K and methane from 673 to 298K \n", + "Ho573 = 30.5 #J/molK\n", + "Hch4673 = 45.9 #J/molK\n", + "H1 = y * Ho573 * (T1 - T2) + Nch4i * Hch4673 * (T1 - T3) \n", + "#CH4 + O2 = CH2O + H2O Hr1 = -282.926kJ\n", + "#CH4 + 2O2 = CO2 + 2H2O Hr2 = -802.372kJ\n", + "Hr1 = -282.926 #kJ\n", + "Hr2 = -802.372 #kJ\n", + "H2 = xch2o*N*Hr1 + xco2*N*Hr2 \n", + "T4 = 873. #K\n", + "Ho = 31.9\n", + "Hch4 = 51.4 \n", + "Hco2 = 46.3 \n", + "Hch2o = 47.1 \n", + "Hh2o = 36.3 \n", + "H3 = ((xco2 * Hco2 + xo2 * Ho + xch4 * Hch4 + Hch2o*xch2o)*N + w * Hh2o)*(T4 - T1) \n", + "Htotal = H1/1000 + H2 + H3/1000 \n", + "Nch2o = xch2o * N \n", + "mch2o = Nch2o * 30.016/1000 #kg\n", + "\n", + "#for 1000 kg of formaldehyde produced,\n", + "H = Htotal * 1000 / mch2o \n", + "# Result \n", + "print \"The amount of heat to be removed per 1000kg of formaldehyde produced = %.1e\"%H,\"kJ\"\n", + "\n", + "# Note: answers are slightly different because of rounding error." + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The amount of heat to be removed per 1000kg of formaldehyde produced = -9.8e+06 kJ\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 12.18 pageno : 494" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "Nn2 = 1. #kmol/s ( basis - feed conisting of 1 kmol of N2 and 3 kmol of H2 )\n", + "Nh2 = 3. #kmol/s\n", + "\n", + "#let x be the fraction converted \n", + "T1 = 700. #K\n", + "Hr1 = -94.2 #kJ/mol\n", + "\n", + "# Calculation \n", + "#heat liberated = Hr1 * x\n", + "#Product consists of 2x kmol NH3, (1-x)kmol N2, and 3(1-x)kmol Hydrogen\n", + "T2 = 800. #K\n", + "Hn2 = 0.03 #kJ/molK\n", + "Hh2 = 0.0289 #kJ/molK\n", + "Hnh3 = 0.0492 #kJ/molK\n", + "\n", + "#H2 = (1-x)*0.03*10**3 * 100 + 3*(1-x)*0.0289*1000*100 + 2*x*0.0492*1000*100\n", + "#H2 = 11.67*1000 - 1.83*10**3*x kJ\n", + "#reaction is adiabatic, hence, H1 = H2\n", + "#solving this we get,\n", + "x = 0.1215 \n", + "Convmax = x * 100 \n", + "\n", + "# Result\n", + "print \"The maximum conversion for nitrogen should be \",Convmax,\"%\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The maximum conversion for nitrogen should be 12.15 %\n" + ] + } + ], + "prompt_number": 18 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 12.19 pageno : 494" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "Nco = 1. #mol CO\n", + "\n", + "# CO + 1/2 O2 = CO2\n", + "O2r = 1. #mol\n", + "N2r = 3.76 #mol\n", + "COr = 1. #mol\n", + "O2p = 0.5 #mol\n", + "N2p = 3.76 #mol\n", + "CO2p = 1. #mol\n", + "Hco = 29.23 #J/molK\n", + "Ho2 = 34.83 #J/molK\n", + "Hn2 = 33.03 #J/molK\n", + "Hco2 = 53.59 #J/molK\n", + "Hcomb1 = -282.99 #kJ/mol\n", + "T1 = 298. #K\n", + "T2 = 373. #K\n", + "\n", + "# Calculation \n", + "H1 = (O2r * Ho2 + N2r * Hn2 + COr * Hco) * (T1 - T2) \n", + "#For product at temp T, H2 = (O2p * Ho2 + N2p * Hn2 + CO2p * Hco2) * (T - T1) \n", + "#For adiabatic condition, -(H1 + Hcomb1) = H2\n", + "T = -(H1 + Hcomb1 * 1000) / (O2p * Ho2 + N2p * Hn2 + CO2p * Hco2) + T1 \n", + "\n", + "# Result\n", + "print \"Theoretical flame temperature = %.1f\"%T,\"K\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Theoretical flame temperature = 1820.1 K\n" + ] + } + ], + "prompt_number": 19 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 12.20 pageno : 495" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "N = 1. #kmol hydrogen burned\n", + "No = N/2 \n", + "\n", + "# Calculation \n", + "Nosupplied = 2 * No \n", + "Nair = Nosupplied * 100 / 21. \n", + "Nn2 = Nair - Nosupplied \n", + "#Reactants, H2 = 1kmol, Air = 4.762 kmol\n", + "#Product, Water vapour = 1kmol, Oxygen = 0.5kmol, N2 = 3.762kmol\n", + "#Cp(water) = 30.475 + (9.652*10**-3)*T + 1.189 * 10**-6 * T**2\n", + "#Cp(nitrogen) = 27.034 + 5.815 * 10**-3 *T - 0.2889 * 10**-6 * T**2\n", + "#Cp(oxygen) = 25.611 + 13.260 * 10**-3 * T - 4.2077 * 10**-6 * T**2\n", + "#H2 = integration(298 to T of (1 * Cp(water) + 0.5 * Cp(oxygen) + 3.762 * Cp(nitrogen)))\n", + "#therefore, H2 = 140.34 * T + 31.222 * 10**-3 * T**2 - 4.928 * 10**-6 * T**2 - 44463.54 kJ\n", + "H298 = -241.826 * 10**3 #kJ\n", + "\n", + "#H2 = -H1 - H298\n", + "#H1 = 0\n", + "#therefore using equation H2, the value of T is obtained to be\n", + "T = 1609.8 #K\n", + "\n", + "# Result\n", + "print \"Temperature of the reaction products = \",T,\"K\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Temperature of the reaction products = 1609.8 K\n" + ] + } + ], + "prompt_number": 20 + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/Stoichiometry_And_Process_Calculations/ch2.ipynb b/Stoichiometry_And_Process_Calculations/ch2.ipynb new file mode 100755 index 00000000..9894afe0 --- /dev/null +++ b/Stoichiometry_And_Process_Calculations/ch2.ipynb @@ -0,0 +1,436 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "Chapter 2 : Units and Dimensions" + ] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": {}, + "source": [ + "Example 2.1 page no : 24" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "import math \n", + "\n", + "# Variables \n", + "V1 = 15. #ft**3/min volumetric flow rate\n", + "ft = 0.3048 #m relationship\n", + "min = 60. #secs relationship\n", + "\n", + "# Calculation \n", + "V = V1*ft**3/min;\n", + "\n", + "# Result \n", + "print \"Volumetric flowrate = %.3e m**3/s\"%V\n", + "D = 1000 #kg/m**3\n", + "M = V * D;\n", + "print \"mass flowrate = %.3f kg/s\"%M\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Volumetric flowrate = 7.079e-03 m**3/s\n", + "mass flowrate = 7.079 kg/s\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "heading", + "level": 3, + "metadata": {}, + "source": [ + "Example 2.2 page no : 24" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# Variables \n", + "ft = 0.3048; #m \n", + "lb = 0.4536; #kg\n", + "\n", + "# Calculation \n", + "P = ft*lb;\n", + "\n", + "# Result \n", + "print \"1 poundal is 1 ft*lb/s**2 = %.4f N\"%P\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "1 poundal is 1 ft*lb/s**2 = 0.1383 N\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "heading", + "level": 3, + "metadata": {}, + "source": [ + "Example 2.3 page no : 24" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# Variables \n", + "kgf = 9.80665; #N KGF\n", + "\n", + "# Calculation and Result \n", + "cm = 10**-2; #m\n", + "P = kgf/cm**2;\n", + "print \"1 kgf/cm**2 = %0.3e N/m**2\"%P\n", + "lbf = 32.174; #lb*ft#s**2\n", + "lb = 0.4535924; #kg\n", + "ft = 0.3048; #m\n", + "in_ = 0.0254; #m\n", + "P1 = lbf*lb*ft/in_**2;\n", + "print \"1 lbf/in**2 = %.2f N/m**2\"%P1\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "1 kgf/cm**2 = 9.807e+04 N/m**2\n", + "1 lbf/in**2 = 6894.75 N/m**2\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "heading", + "level": 3, + "metadata": {}, + "source": [ + "Example 2.4 page no : 25" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# Variables \n", + "Q1 = 10000. #kJ/hr rate of heat transfer\n", + "kJ = 1000. #J \n", + "hr = 3600. #s \n", + "\n", + "# Calculation \n", + "Q = Q1*kJ/hr; #J/s\n", + "print \"Q = %.2f J/s\"%Q\n", + "x = 0.1; #m\n", + "A = 1. #m**2\n", + "T = 800. #K\n", + "k = x*Q/(A*T);\n", + "\n", + "# Result \n", + "print \"thermal conductivity = %.3f W/(m*k)\"%k\n", + "J = 1/4.1868 #cal\n", + "k1 = k*J*hr/1000\n", + "print \"thermal conductivity = %.3F kcal/(h*m*C)\"%k1\n", + "\n", + "# note : answers may vary because of rounding off error." + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Q = 2777.78 J/s\n", + "thermal conductivity = 0.347 W/(m*k)\n", + "thermal conductivity = 0.299 kcal/(h*m*C)\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "heading", + "level": 3, + "metadata": {}, + "source": [ + "Example 2.5 page no : 26" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# Variables \n", + "F = 300. #N weight of object\n", + "a = 9.81; #m/s**2 gravity\n", + "\n", + "# Calculation \n", + "m = F/a; #kg\n", + "\n", + "# Result \n", + "print \"mass in kg = %.2f kg\"%m\n", + "lb = 4.535924/10; #kG\n", + "m1 = m/lb\n", + "print \"mass in pounds = %.2f LB\"%m1\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "mass in kg = 30.58 kg\n", + "mass in pounds = 67.42 LB\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "heading", + "level": 3, + "metadata": {}, + "source": [ + "Example 2.6 page no : 26" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# Variables \n", + "z = 15. #m height\n", + "PE = 2000.; #J potential energy\n", + "g = 9.8067; #m/s**2 \n", + "\n", + "# Calculation \n", + "m = PE/(z*g);\n", + "\n", + "# Result \n", + "print \"mass = %.3f kg\"%m\n", + "v = 50; #m/s\n", + "KE = 1./2*m*(v**2)/1000.;\n", + "print \"kinetic energy = %.3f kj\"%KE\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "mass = 13.596 kg\n", + "kinetic energy = 16.995 kj\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "heading", + "level": 3, + "metadata": {}, + "source": [ + "Example 2.7 page no : 26" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "# Variables \n", + "g = 9.81; #m/s**2 gravity\n", + "m = 100 * 0.4536; #kg weight \n", + "P = 101325.; #N/m**2 standard atomosphere\n", + "D1 = 4.; #inch\n", + "\n", + "# Calculation \n", + "D = D1 * 2.54 * 10**-2; #m\n", + "A = 3.1415 * (D**2)/4; #m**2\n", + "F1 = P * A; #N\n", + "F2 = m * g; #N\n", + "F = F1 + F2;\n", + "\n", + "# Result \n", + "print \"Total force acting on the gas = %.2f N\"%F\n", + "P1 = F / A; #N/m**2\n", + "P2 = P1/100000.; #bar\n", + "P3 = P1/(6.894757 * 10**3); #psi\n", + "print \"Pressure in N/m**2 = %.3e N/m**2\"%P1\n", + "print \"Pressure in bar = %.3f bar\"%P2\n", + "print \"Pressure in psi = %.2f psi\"%P3\n", + "d = 0.4; #m\n", + "W = F * d;\n", + "print \"Work done = %.2f J\"%W\n", + "PE = m * g * d;\n", + "print \"Change in potential energy = %.2f J\"%PE\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Total force acting on the gas = 1266.43 N\n", + "Pressure in N/m**2 = 1.562e+05 N/m**2\n", + "Pressure in bar = 1.562 bar\n", + "Pressure in psi = 22.66 psi\n", + "Work done = 506.57 J\n", + "Change in potential energy = 177.99 J\n" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "heading", + "level": 3, + "metadata": {}, + "source": [ + "Example 2.8 page no : 28" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# Variables \n", + "#kG = (6.7 * 10**-4) * (( G * (ds + dt) / ds)**0.8) / ((ds**0.4)*(dG**0.2))\n", + "\n", + "#kG - lbmol/(h ft**2 atm), G - lb/(ft**2 h), ds, dG, dt - feet\n", + "#kG1 - kmol/(m**2 h atm), G1 - kg/(m**2 h), ds1, dG1, dt1 - m\n", + "G = 0.2048; #G1 * lb/(ft**2 h) velocity\n", + "d = 3.2808; #d1 * ft clearance between grids\n", + "ds = d; # clearance between grids\n", + "dt = d; # clearance between grids\n", + "dG = d; # clearance between grids\n", + "kG = 4.885; #kG1 (lbmol/(h ft**2 atm) = 4.885 * kmol/(m**2 h atm))\n", + "\n", + "# Calculation \n", + "C = (6.7 * 10**-4) * (( G * d / ds)**0.8) / ((ds**0.4)*(dG**0.2))* kG;\n", + "\n", + "# Result \n", + "print \"Co-efficient = %.2e (kmol)(kg)**-0.8 (m)**0.2 (h)**-0.2 (atm)**-1\"%C\n", + "# this is the constant for the equation\n", + "# the equation thus becomes,\n", + "# kG1 = C * (( G1 * (ds1 + dt1) / ds1)**0.8) / ((ds1**0.4)*(dG1**0.2))\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Co-efficient = 4.51e-04 (kmol)(kg)**-0.8 (m)**0.2 (h)**-0.2 (atm)**-1\n" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "heading", + "level": 3, + "metadata": {}, + "source": [ + "Example 2.9 page no : 29" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "from sympy import Symbol\n", + "\n", + "# Variables \n", + "#Cp = 7.13 + 0.577 * (10**-3) * t + 0.0248 * (10**-6) * t**2 \n", + "\n", + "#Cp - Btu/lb-mol F, t - F\n", + "#Cp1 - kJ/kmol K , t1 - K\n", + "a = 7.13 # first term\n", + "b = 0.577 * 10**-3 # second term\n", + "c = 0.0248 * 10**-6 # third term\n", + "#t = 1.8 * t1 - 459.67\n", + "Cp = 4.1868; #Cp1 (Btu/lb-mol F = 4.1868 * (kJ/kmol K) )\n", + "t = Symbol('T')\n", + "#substituting the above, we get,\n", + "#Cp1 = 28.763 + 4.763 * (10**-3) * t1 + 0.3366 * (10**-6) * t**2\n", + "a1 = 28.763\n", + "\n", + "# Calculation \n", + "b1 = 4.763 * (10**-3)\n", + "c1 = 0.3366 * (10**-6)\n", + "\n", + "Cp = a1 + b1*t + c1*t**2\n", + "# Result \n", + "print \"a1 = \",a1\n", + "print \"b1 = \",b1\n", + "print \"c1 = \",c1\n", + "# this are the co efficents for the following equation;\n", + "# Cp1 = a1 + b1 * t1 + c1 * (t1)**2\n", + "print \"Equation Cp = \",Cp" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "a1 = 28.763\n", + "b1 = 0.004763\n", + "c1 = 3.366e-07\n", + "Equation Cp = 3.366e-7*T**2 + 0.004763*T + 28.763\n" + ] + } + ], + "prompt_number": 10 + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/Stoichiometry_And_Process_Calculations/ch3.ipynb b/Stoichiometry_And_Process_Calculations/ch3.ipynb new file mode 100755 index 00000000..5ff86e83 --- /dev/null +++ b/Stoichiometry_And_Process_Calculations/ch3.ipynb @@ -0,0 +1,927 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "Chapter 3 : Fundamental concepts of Stoichiometry" + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 3.1 page no : 41" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# Variables \n", + "\n", + "m = 1000 * 0.4536; #kg/min pounds\n", + "M = 30.24; #gm/mol avg. molecular weight\n", + "\n", + "# Calculation \n", + "m1 = m * 60 / M;\n", + "\n", + "# Result\n", + "print \"molar folw rate = \",m1,\"kmol/hr\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "molar folw rate = 900.0 kmol/hr\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 3.2 page no : 42" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# Variables \n", + "MK = 39.1; #potassium\n", + "MC = 12.0; # carbon\n", + "MO = 16.; # oxygen\n", + "\n", + "# Calculation \n", + "MK2CO3 = MK * 2 + MC + MO * 3;\n", + "m = 691.;\n", + "N = m / MK2CO3;\n", + "A = 6.023 * 10**23;\n", + "molecules = N * A;\n", + "\n", + "# Result \n", + "print \"Total no. of molecules = %.4e molecules\"%molecules\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Total no. of molecules = 3.0115e+24 molecules\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 3.3 page no : 43" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# Variables \n", + "Na = 23.; #gm/mol weight of sodium\n", + "MNa = 100.; #kg sodium\n", + "\n", + "# Calculation \n", + "N = MNa * 1000 / Na ; #g-atoms \n", + "NNa2SO4 = N / 2;\n", + "\n", + "# Result \n", + "print \"(a) moles of sodium sulphate = %.3e mol\"%NNa2SO4\n", + "MNa2SO4 = 142.06;\n", + "m = NNa2SO4 * MNa2SO4/1000;\n", + "print \"(b)kilograms of sodium sulphate = %.2f kg\"%m\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a) moles of sodium sulphate = 2.174e+03 mol\n", + "(b)kilograms of sodium sulphate = 308.83 kg\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 3.4 page no : 43" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# Variables \n", + "MFe = 55.85; \n", + "MO = 16.;\n", + "MS = 32.;\n", + "MFeS2 = MFe + MS * 2; # molecular weight of FeS2\n", + "MFe2O3 = MFe * 2 + MO * 3; # molecular weight of Fe2O3\n", + "MSO3 = MS + MO * 3; # molecular weight of SO3\n", + "m1SO3 = 100.; #kg\n", + "\n", + "# Calculation \n", + "N1 = m1SO3 / (MSO3); #kmol\n", + "NFeS2 = N1 / 2;\n", + "mFeS2 = NFeS2 * MFeS2;\n", + "\n", + "# Result\n", + "print \"mass of pyrites to obtain 100kg of SO3 = %.2f kg\"%mFeS2\n", + "m2SO3 = 50.; #kg\n", + "N2 = m2SO3 / (MSO3); #kmol\n", + "NO2 = N2 * 15/8.;\n", + "mO2 = NO2 * MO * 2;\n", + "print \"mass of Oxygen consumed to produce 50kg of SO3 = %.2f kg\"%mO2\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "mass of pyrites to obtain 100kg of SO3 = 74.91 kg\n", + "mass of Oxygen consumed to produce 50kg of SO3 = 37.50 kg\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 3.5 page no : 44" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# Variables \n", + "MKClO3 = 122.55 # weight of potassium\n", + "mKClO3 = 100.; #kg potassium\n", + "\n", + "# Calculation \n", + "NKClO3 = mKClO3 / MKClO3;\n", + "NO2 = 3 * NKClO3 / 2;\n", + "V1 = 22.4143; #m**3/kmol;\n", + "V = V1 * NO2;\n", + "\n", + "# Result \n", + "print \"volume of oxygen produced = %.2f m**3\"%V\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "volume of oxygen produced = 27.43 m**3\n" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 3.6 page no : 44" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# Variables \n", + "mH2 = 100.; #kg hydrogen\n", + "\n", + "# Calculation \n", + "NH2 = mH2/2.016;\n", + "NFe = 3. * NH2 / 4;\n", + "mFe = NFe * 55.85;\n", + "\n", + "# Result \n", + "print \"(a)mass of iron required = %.2f kg\"%mFe\n", + "NH2O = NH2 \n", + "mH2O = NH2O * 18;\n", + "print \"mass of steam required = %.1f kg\"%mH2O\n", + "V1 = 22.4143; #m**3/kmol;\n", + "V = V1 * NH2;\n", + "print \"(b)Volume of hydrogen = %.1f m**3\"%V\n", + "\n", + "# Answer may vary because of rounding error.\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)mass of iron required = 2077.75 kg\n", + "mass of steam required = 892.9 kg\n", + "(b)Volume of hydrogen = 1111.8 m**3\n" + ] + } + ], + "prompt_number": 9 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 3.7 page no : 46" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "MCaCO3 = 100.08; # molecular weight of CaCO3\n", + "\n", + "# Calculation \n", + "GE = MCaCO3 / 2;\n", + "\n", + "# Result\n", + "print \"Gram equivalent wt. of CaCO3 =\",GE,\"g\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Gram equivalent wt. of CaCO3 = 50.04 g\n" + ] + } + ], + "prompt_number": 11 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 3.8 page no : 48\n" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "m1 = 1.; #kg (mass in air)\n", + "m2 = 0.9; #kg (mass in water)\n", + "m3 = 0.82; #kg (mass in liquid)\n", + "\n", + "# Calculation \n", + "L1 = m2 - m1; #kg (loss of mass in water)\n", + "L2 = m3 - m1; #kg (loss of mass in liquid)\n", + "sp_g = L2 /L1;\n", + "\n", + "# Result\n", + "print \"specific gravity of liquid = \",sp_g\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "specific gravity of liquid = 1.8\n" + ] + } + ], + "prompt_number": 13 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 3.9 page no : 49\n" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "m1 = 10. #kg liquid A\n", + "m2 = 5. #kg liquid B\n", + "sp_g1 = 1.17; # gravity A\n", + "sp_g2 = 0.83; # gravity B\n", + "Dwater = 1000. #kg/m**3 water\n", + "\n", + "# Calculation \n", + "DA = Dwater * sp_g1;\n", + "DB = Dwater * sp_g2;\n", + "V1 = m1 / DA;\n", + "V2 = m2 / DB;\n", + "V = V1 + V2;\n", + "Dmix = (m1 + m2)/ V ;\n", + "sp_g3 = Dmix \n", + "\n", + "# Result\n", + "print \"specific gravity of mixture = %.f kg/m**3\"%sp_g3\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "specific gravity of mixture = 1029 kg/m**3\n" + ] + } + ], + "prompt_number": 15 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 3.10 page no : 49" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "Tw = 100.; #Tw baume scale\n", + "\n", + "# Calculation \n", + "sp_g = Tw/200 + 1;\n", + "Be = 145 - 145/sp_g;\n", + "\n", + "# Result\n", + "print \"specific gravity on beume scale = %.1f Be\"%Be\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "specific gravity on beume scale = 48.3 Be\n" + ] + } + ], + "prompt_number": 17 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 3.11 page no : 49\n" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "API1 = 30. #API gas oil\n", + "sp_g1 = 141.5/(131.5 + API1) # (since, API = 141.5/sp_g -131.5) gravity scale\n", + "Dwater = 999. #kg/m**3; density of water\n", + "\n", + "# Calculation \n", + "Doil1 = sp_g1 * Dwater;\n", + "V1 = 250.; #m**3\n", + "m1 = V1 * Doil1;\n", + "API2 = 15.; #API\n", + "sp_g2 = 141.5/(131.5 + API2); # (since, API = 141.5/sp_g -131.5)\n", + "Dwater = 999.; #kg/m**3;\n", + "Doil2 = sp_g2 * Dwater;\n", + "V2 = 1000.; #m**3\n", + "m2 = V2 * Doil2;\n", + "Dmix = (m1 + m2)/(V1 + V2);\n", + "\n", + "# Result\n", + "print \"density of the mixture = %.f kg/m**3\"%Dmix\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "density of the mixture = 947 kg/m**3\n" + ] + } + ], + "prompt_number": 19 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 3.12 page no : 51" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "m1 = 250. #kg wet ammonium sulphate\n", + "mwater1 = 50. #kg moisture\n", + "\n", + "# Calculation \n", + "mdrysolid1 = m1 - mwater1;\n", + "wfe1 = mwater1 / m1;\n", + "wr1 = mwater1 / mdrysolid1; \n", + "wtpercentw1 = mwater1 * 100 / m1;\n", + "wtpercentd1 = mwater1 * 100 / mdrysolid1;\n", + "a = 90. #%\n", + "mwater2 = mwater1 * (1 - a/100);\n", + "m2 = mdrysolid1 + mwater2;\n", + "wfe2 = mwater2 / m2;\n", + "wr2 = mwater2 / mdrysolid1; \n", + "wtpercentw2 = mwater2 * 100 / m2;\n", + "wtpercentd2 = mwater2 * 100 / mdrysolid1;\n", + "\n", + "# Result\n", + "print \"(a)weight fraction of water at entrance =\",wfe1\n", + "print \"weight fraction of water at exit = %.3f\"%wfe2\n", + "print \"(b)weight ratio of water at entrance = \",wr1\n", + "print \"weight ratio of water at exit = \",wr2\n", + "print \"weight percent of moisture on wet basis at entrance = \",wtpercentw1,\"%\"\n", + "print \"(c)weight percent of moisture on dry basis at entrance = \",wtpercentd1,\"%\"\n", + "print \"weight percent of moisture on wet basis at exit = %.2f %%\"%wtpercentw2\n", + "print \"(d)weight percent of moisture on dry basis at exit = \",wtpercentd2,\"%\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)weight fraction of water at entrance = 0.2\n", + "weight fraction of water at exit = 0.024\n", + "(b)weight ratio of water at entrance = 0.25\n", + "weight ratio of water at exit = 0.025\n", + "weight percent of moisture on wet basis at entrance = 20.0 %\n", + "(c)weight percent of moisture on dry basis at entrance = 25.0 %\n", + "weight percent of moisture on wet basis at exit = 2.44 %\n", + "(d)weight percent of moisture on dry basis at exit = 2.5 %\n" + ] + } + ], + "prompt_number": 20 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 3.13 page no : 53" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "mdrysolid = 100. #kg dry solids\n", + "percentin = 25. # water in the feed\n", + "\n", + "# Calculation \n", + "mwaterin = mdrysolid * percentin / 100;\n", + "percentout = 2.5;\n", + "mwaterout = mdrysolid * percentout / 100;\n", + "mremoved = mwaterin - mwaterout;\n", + "percentremoved = mremoved *100 / mwaterin ;\n", + "\n", + "# Result\n", + "print \"percentage of water removed = \",percentremoved\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "percentage of water removed = 90.0\n" + ] + } + ], + "prompt_number": 21 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 3.14 page no : 53" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "m = 1. #kg wet ammonium sulphate\n", + "percent1 = 20. #% water\n", + "\n", + "# Calculation \n", + "mwaterin = m * percent1 / 100.\n", + "mdrysolid = m - mwaterin;\n", + "percent2 = 2.44; #%\n", + "mout = mdrysolid / (1 - percent2/100);\n", + "mwaterout = mout - mdrysolid;\n", + "mremoved = mwaterin - mwaterout;\n", + "percentremoved = mremoved * 100 / mwaterin ;\n", + "\n", + "# Result\n", + "print \"weight of water removed = %.2f kg\"%mremoved\n", + "print \"percentage of water removed = %.f %%\"%percentremoved\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "weight of water removed = 0.18 kg\n", + "percentage of water removed = 90 %\n" + ] + } + ], + "prompt_number": 23 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 3.15 page no : 55" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "mwater = 100. #kg water\n", + "mNaCl = 35.8 #kg solubility\n", + "\n", + "# Calculation \n", + "msolu = mwater + mNaCl;\n", + "mfr = mNaCl / msolu;\n", + "mpr = mfr * 100;\n", + "MNaCl = 58.45; #kg/kmol\n", + "NNaCl = mNaCl / MNaCl;\n", + "MH2O = 18. #kg/kmol\n", + "NH2O = mwater / MH2O;\n", + "Mfr = NNaCl / (NNaCl + NH2O);\n", + "Mpr = Mfr * 100;\n", + "N = NNaCl *1000 / mwater;\n", + "\n", + "# Result\n", + "print \"(a)mass fraction of NaCl = %.4f\"%mfr\n", + "print \"mass percent of NaCl= %.2f %%\"%mpr\n", + "print \"(b)mole fraction of NaCl = %.4f\"%Mfr\n", + "print \"mole percent of NaCl = %.2f %%\"%Mpr\n", + "print \"kmol NaCl per 1000 kg of water = %.3f kMol NaCl\"%N\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)mass fraction of NaCl = 0.2636\n", + "mass percent of NaCl= 26.36 %\n", + "(b)mole fraction of NaCl = 0.0993\n", + "mole percent of NaCl = 9.93 %\n", + "kmol NaCl per 1000 kg of water = 6.125 kMol NaCl\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 3.16 page no : 55" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "Y = 0.015; #kg water vapour/kg dry air\n", + "Mair = 29.; #kg/kmol weight of air\n", + "Mwater = 18.016; #kg/kmol \n", + "\n", + "# Calculation \n", + "Nwater = Y / Mwater; #kmol\n", + "Nair = 1 / Mair; #kmol\n", + "Mpr = Nwater *100 / (Nwater + Nair);\n", + "Mr = Nwater / Nair;\n", + "\n", + "# Result\n", + "print \"(a)mole percent of water vapour = %.2f %%\"%Mpr\n", + "print \"(b) molal absolute humidity = %.4f kmol water/kmol dry air\"%Mr\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)mole percent of water vapour = 2.36 %\n", + "(b) molal absolute humidity = 0.0241 kmol water/kmol dry air\n" + ] + } + ], + "prompt_number": 26 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 3.17 page no : 56" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "msolu = 100.; #g basis\n", + "MK2CO3 = 138.20; #g/mol molecular weight\n", + "percent1 = 50.; #% mass of K2CO3\n", + "\n", + "# Calculation \n", + "mK2CO3 = percent1 *msolu / 100;\n", + "NK2CO3 = mK2CO3 / MK2CO3;\n", + "mwater = msolu - mK2CO3;\n", + "Nwater = mwater / 18.06;\n", + "Mpr = NK2CO3 * 100 / (NK2CO3 + Nwater);\n", + "sp_gr =1.53;\n", + "Vsolu = msolu/sp_gr; #mL\n", + "Vwater = mwater / 1; #mL\n", + "Vpr = Vwater * 100/ Vsolu;\n", + "Molality = NK2CO3 / (mwater * 10**-3);\n", + "Molarity = NK2CO3 / (Vsolu * 10**-3);\n", + "Eq_wt = MK2CO3 / 2;\n", + "No = mK2CO3/Eq_wt;\n", + "N = No / (Vsolu * 10**-3);\n", + "\n", + "# Result\n", + "print \"(a)Mole prcent of salt = %.2f %%\"%Mpr\n", + "print \"(b)Volume percent of water = %.2f %%\"%Vpr\n", + "print \"(c)Molality = %.3f mol/kg\"%Molality\n", + "print \"(d)Molarity = %.3f mol/L\"%Molarity\n", + "print \"(e)Normality = %.2f N\"%N\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Mole prcent of salt = 11.56 %\n", + "(b)Volume percent of water = 76.50 %\n", + "(c)Molality = 7.236 mol/kg\n", + "(d)Molarity = 5.535 mol/L\n", + "(e)Normality = 11.07 N\n" + ] + } + ], + "prompt_number": 27 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 3.18 page no : 58" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "msolu = 100.; #kg volume\n", + "percent1 = 60.; #% alcohol\n", + "Dwater = 998.; #kg/m**3 water\n", + "Dalco = 798.; #kg/m**3 alcohol\n", + "Dsolu = 895.; #kg/m**3 solution\n", + "\n", + "# Calculation \n", + "Vsolu = msolu/Dsolu;\n", + "malco = msolu * percent1 / 100;\n", + "Valco = malco / Dalco;\n", + "Vpr = Valco * 100 / Vsolu;\n", + "Malco = 46.048; #kg/kmol\n", + "N = malco/Malco;\n", + "Molarity = N/(Vsolu );\n", + "mwater = msolu - malco;\n", + "Molality = N * 1000 /mwater;\n", + "\n", + "# Result\n", + "print \"(a)Volume percent of ethanol in solution = %.1f %%\"%Vpr\n", + "print \"(b)Molarity = %.2f mol/L\"%Molarity\n", + "print \"(c)Molality = %.3f mol/(kg of water)\"% Molality\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Volume percent of ethanol in solution = 67.3 %\n", + "(b)Molarity = 11.66 mol/L\n", + "(c)Molality = 32.575 mol/(kg of water)\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 3.19 page no : 63" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "#CO + CL2 = COCl2\n", + "import math \n", + "# Variables \n", + "Np = 12.; #moles phosgene\n", + "NCl2 = 3.; #moles chlorine\n", + "NCO = 8.; #moles carbon monoxide\n", + "\n", + "# Calculation \n", + "N1Cl2 = NCl2 + Np;\n", + "N1CO = NCO + Np;\n", + "pr_ex = (N1CO - N1Cl2)* 100/N1Cl2;\n", + "pr_co = (N1Cl2-NCl2) * 100/ N1Cl2;\n", + "T = Np + NCl2 + NCO;\n", + "T1 = N1Cl2 + N1CO;\n", + "N = T / T1;\n", + "\n", + "# Result\n", + "print \"(a)percent excess of CO = %.2f %%\"%pr_ex\n", + "print \"(b)percent conversion = %.2f %%\"%pr_co\n", + "print \"(c)Moles of total products per mole of total reactants = %.3f\"%N\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)percent excess of CO = 33.33 %\n", + "(b)percent conversion = 80.00 %\n", + "(c)Moles of total products per mole of total reactants = 0.657\n" + ] + } + ], + "prompt_number": 29 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 3.21 page no : 64" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# Variables \n", + "\n", + "msolu = 100.; #g mold of feed mixture\n", + "MK2CO3 = 138.20; #g/mol \n", + "ethylene = 53.89 # %\n", + "ethanol = 14.37 # %\n", + "ether = 1.8 # %\n", + "water = 23.35 # %\n", + "\n", + "# Calculation \n", + "Ethylene = ethylene * 83.57 / 100\n", + "Ethanol = ethanol*83.57 / 100\n", + "Ether = ether*83.57 / 100\n", + "Water = water*83.57 / 100\n", + "Inerts = 3 # mol\n", + "\n", + "conversion_ethylene = (60 - Ethylene)/60 * 100\n", + "yield_ethanol = Ethanol/(60 - Ethylene)*100\n", + "yeild_ether = Ether*2/(60-Ethylene) * 100\n", + "\n", + "# Result \n", + "print \"Conversation of ethylene = %.2f %%\"%conversion_ethylene\n", + "print \"Yield of ethanol = %.2f %%\"%yield_ethanol\n", + "print \"Yield of Ether = %d %%\"%yeild_ether\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Conversation of ethylene = 24.94 %\n", + "Yield of ethanol = 80.25 %\n", + "Yield of Ether = 20 %\n" + ] + } + ], + "prompt_number": 1 + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/Stoichiometry_And_Process_Calculations/ch4.ipynb b/Stoichiometry_And_Process_Calculations/ch4.ipynb new file mode 100755 index 00000000..a8fae4f9 --- /dev/null +++ b/Stoichiometry_And_Process_Calculations/ch4.ipynb @@ -0,0 +1,796 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "Chapter 4 : Ideal Gases and Gas Mixtures" + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 4.1 page no : 79" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "import math \n", + "\n", + "# Variables \n", + "P1 = 760. #mmHg standard conditions\n", + "T1 = 273.15; #K\n", + "\n", + "# Calculation and Result \n", + "V1 = 22.4143 * 10**-3; #m**3/mol\n", + "R1 = P1 * V1 / T1;\n", + "print \"Gas constant R = %.4e m**3 mmHg / (molK)\"%R1\n", + "P2 = 101325; #N/m**2\n", + "T2 = 273.15; #K\n", + "V2 = 22.4143 * 10**-3; #m**3/mol\n", + "R2 = P2 * V2 / T2; #J/molK\n", + "R3 = R2 / 4.184; #cal/molK\n", + "print \"Gas constant R in MKS system = %.3f cal/molK\"%R3\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Gas constant R = 6.2365e-02 m**3 mmHg / (molK)\n", + "Gas constant R in MKS system = 1.987 cal/molK\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 4.2 page no : 80" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# Variables \n", + "T = 350. #K\n", + "P = 1; #bar\n", + "\n", + "# Calculation \n", + "V1 = 22.4143 * 10**-3; #m**3 (suffix 1 represents at STD)\n", + "P1 = 1.01325; #bar\n", + "T1 = 273.15; #K\n", + "V = P1 * V1 * T/(T1 * P);\n", + "\n", + "# Result \n", + "print \"Molar volume = %.2e m**3/mol\"%V\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Molar volume = 2.91e-02 m**3/mol\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 4.3 page no : 80" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# Variables \n", + "P = 10. #bar oxygen cylinder gas\n", + "T = 300.; #K\n", + "V = 150.; #L\n", + "P1 = 1.01325; #bar ( \\suffix 1 represents at STD)\n", + "T1 = 273.15; #K\n", + "\n", + "# Calculation \n", + "V2 = T1 * P * V /(T * P1); #m**3\n", + "V1 = 22.4143; #m**3/mol\n", + "N = V2 / V1; #mol\n", + "MO2 = 32.;\n", + "m = N * MO2/1000;\n", + "\n", + "# Result \n", + "print \"Mass of oxygen in the cylinder = %.4f kg\"%m\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Mass of oxygen in the cylinder = 1.9243 kg\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 4.4 page no: 81" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "P = 195. #kPa pressure\n", + "T = 273. #K automobile tyre\n", + "P1 = 250 #kPa pressure\n", + "\n", + "# Calculation \n", + "T1 = P1 * T / P;\n", + "\n", + "# Result\n", + "print \"Maximum temperature to which tyre may be heated = \",T1,\"K\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Maximum temperature to which tyre may be heated = 350.0 K\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 4.5 page no : 81\n" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "# variables \n", + "V = 250. #L carbon dioxide\n", + "T = 300. #K temperature\n", + "V1 = 1000. #L \n", + "P1 = 100. #kPa cylinder\n", + "T1 = 310. #K temperature\n", + "\n", + "# Calculation \n", + "P = T * P1 * V1 /(T1 * V);\n", + "\n", + "# Result\n", + "print \"Original pressure in the cylinder = %.1f kPa\"%P\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Original pressure in the cylinder = 387.1 kPa\n" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 4.6 pageno : 85" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "Vper1 = 70. #% ( 1 = HCl) rubber showed\n", + "Vper2 = 20. #% ( 2 = Cl2) volume\n", + "Vper3 = 10. #% ( 3 = CCl4)\n", + "M1 = 36.45 # molecular weights\n", + "M2 = 70.90\n", + "M3 = 153.8\n", + "\n", + "# Calculation \n", + "m1 = Vper1 * M1\n", + "m2 = Vper2 * M2\n", + "m3 = Vper3 * M3\n", + "mper1 = m1 * 100/(m1+ m2 + m3);\n", + "mper2 = m2 * 100/(m1+ m2 + m3);\n", + "mper3 = m3 * 100/(m1+ m2 + m3);\n", + "\n", + "# Result\n", + "print \" (a) weight percent of HCl= %.2f%%\"%mper1\n", + "print \"weight percent of Cl2 = %.2f %%\"%mper2\n", + "print \"weight percent of CCl4 = %.2f %%\"%mper3\n", + "\n", + "m = (m1 + m2 + m3)/(Vper1 + Vper2 + Vper3);\n", + "print \"(b)average molecular weight = %.3f kg\"%m\n", + "v = 22.4143; #m**3/kmol\n", + "Vtotal = v * (Vper1 + Vper2 + Vper3);\n", + "D = (m1 + m2 + m3)/Vtotal;\n", + "print \"(c)Density at standard condiions = %.4f kg/m**3\"%D\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " (a) weight percent of HCl= 46.33%\n", + "weight percent of Cl2 = 25.75 %\n", + "weight percent of CCl4 = 27.93 %\n", + "(b)average molecular weight = 55.075 kg\n", + "(c)Density at standard condiions = 2.4571 kg/m**3\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 4.7 page no : 85" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "per1 = 93. #% ( 1 = methane)\n", + "per2 = 4.5; #% (2 = ethane)\n", + "per3 = 100 - (per1 + per2); #% ( 3 = N2);\n", + "T = 300. #K natural gas \n", + "p = 400. #kPa\n", + "P3 = p * per3 / 100;\n", + "v = 10. #m**3\n", + "V2 = per2 * v / 100;\n", + "M1 = 16.032;\n", + "M2 = 30.048;\n", + "M3 = 28;\n", + "N1 = per1;\n", + "N2 = per2;\n", + "N3 = per3;\n", + "\n", + "# Calculation \n", + "m1 = M1 * N1;\n", + "m2 = M2 * N2;\n", + "m3 = M3 * N3;\n", + "m = m1 + m2 + m3;\n", + "Vstp = 100 * 22.4143 * 10**-3; #m3 at STP\n", + "D = m /(1000 * Vstp);\n", + "Pstp = 101.325; #kPa\n", + "T1 = 273.15; #K\n", + "V = T * Pstp * Vstp / ( T1 * p);\n", + "D1 = m /(1000 * V);\n", + "Mavg = m /100;\n", + "mper1 = m1 * 100 / (m1 + m2 + m3);\n", + "mper2 = m2 * 100 / (m1 + m2 + m3);\n", + "mper3 = m3 * 100 / (m1 + m2 + m3);\n", + "\n", + "# Result\n", + "print \"(a) Partial pressure of nitrogen = \",P3,\"kPa\"\n", + "print \"(b) pure-component volume of ethane = \",V2,\"m**3\"\n", + "print \"(c) Density at standard conditions = %.4f kg/m**3\"%D\n", + "print \"(d) Density at given condition = %.4f kg/m**3\"%D1\n", + "print \"(e) Average molecular weight = %.2f\"%Mavg\n", + "print \"(f) weight percent of Methane = %.2f %%\"%mper1\n", + "print \"weight percent of Ethane = %.2f %%\"%mper2\n", + "print \"weight percent of Nitrogen = %.2f %%\"%mper3\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a) Partial pressure of nitrogen = 10.0 kPa\n", + "(b) pure-component volume of ethane = 0.45 m**3\n", + "(c) Density at standard conditions = 0.7567 kg/m**3\n", + "(d) Density at given condition = 2.7200 kg/m**3\n", + "(e) Average molecular weight = 16.96\n", + "(f) weight percent of Methane = 87.90 %\n", + "weight percent of Ethane = 7.97 %\n", + "weight percent of Nitrogen = 4.13 %\n" + ] + } + ], + "prompt_number": 13 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 4.8 pageno : 87" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "per1 = 20. #% ( 1 = ammonia) \n", + "Vstp = 22.4143; #m**3/kmol\n", + "Pstp = 101.325; #kPa\n", + "Tstp = 273.15; #K\n", + "V1 = 100. #m**3 ammonia air\n", + "P1 = 120. #kPa absorption column\n", + "T1 = 300. #K\n", + "P2 = 100. #kPa gas leaves\n", + "T2 = 280. #K gas leaves\n", + "per2 = 90. #% (absorbed)\n", + "\n", + "# Calculation \n", + "N = V1 * P1 * Tstp / (Vstp * Pstp * T1); #kmol\n", + "Nair = (1 - per1 / 100) * N;\n", + "N1 = per1 * N/100;\n", + "Nabs = per2 * N1 / 100;\n", + "N2 = N1 - Nabs; #leaving\n", + "Ntotal = Nair + N2;\n", + "Vstp1 = Ntotal * Vstp; #m**3\n", + "V2 = Vstp1 * Pstp * T2 / (Tstp * P2);\n", + "\n", + "# Result\n", + "print \"Volume of gas leaving = \",V2, \"m**3\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Volume of gas leaving = 91.84 m**3\n" + ] + } + ], + "prompt_number": 14 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 4.9 pageno : 89" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "V = 100. #m**3 air\n", + "Ptotal = 100. #kPa air\n", + "Pwater = 4. #kPa pressure\n", + "Pair = Ptotal - Pwater; \n", + "T = 300. #K air\n", + "T1 = 275. #K air cooled\n", + "Vstp = 22.4143; #m**3/kmol\n", + "Tstp = 273.15; #K\n", + "Pstp = 101.325; #kPa\n", + "Pwater1 = 1.8; #kPa\n", + "\n", + "# Calculation \n", + "Pair1 = Ptotal - Pwater1;\n", + "V1 = V * Pair * T1 / ( T * Pair1);\n", + "Nwater = V * Pwater * Tstp/ (Vstp * Pstp * T);\n", + "Nwater1 = V1 * Pwater1 * Tstp/ (Vstp * Pstp * T1);\n", + "m = (Nwater - Nwater1) * 18.02;\n", + "\n", + "# Result\n", + "print \"(a) volume of air after dehumidification = %.2f m**3\"%V1\n", + "print \"(b) Mass of water vapour removed = %.3f kg\"%m\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a) volume of air after dehumidification = 89.61 m**3\n", + "(b) Mass of water vapour removed = 1.618 kg\n" + ] + } + ], + "prompt_number": 15 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 4.10 pageno : 90" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# variables \n", + "V = 100. #m**3 rate \n", + "P = 600. #kPa gas\n", + "T = 310. #K gas\n", + "per1 = 20. #% ( H2S entering )\n", + "per2 = 2. #% ( H2S leaving )\n", + "Pstp = 101.325; #kPa\n", + "Tstp = 273.15; #K\n", + "Vstp = 22.414; #m**3/kmol\n", + "\n", + "# Calculation \n", + "Vstp1 = V * P * Tstp / ( T * Pstp)\n", + "N = Vstp1 / Vstp;\n", + "N1 = N * per1 / 100;\n", + "N2 = N - N1; # ( 2 = inerts)\n", + "Nleaving = N2 / ( 1 - per2 / 100);\n", + "N1leaving = per2 * Nleaving / 100;\n", + "mabsorbed = (N1 - N1leaving) * 34.08; #( molecular wt. = 34.08)\n", + "mgiven = 100. #kg/h\n", + "Vactual = mgiven * V / mabsorbed;\n", + "Nactual = Nleaving * Vactual / V; # actual moles leaving\n", + "Vstpl = Nactual * Vstp; # volume leaving at STP\n", + "P2 = 500. #kPa\n", + "T2 = 290. #K\n", + "V2 = Vstpl * Pstp * T2 / ( P2 * Tstp);\n", + "Precovery = (N1 - N1leaving)*100 / N1;\n", + "\n", + "# Result\n", + "print \"(a)Volume of gas entering per hour %.2f m**3/h\"%Vactual\n", + "print \"(b)Volume of gas leaving per hour %.2f m**3/h\"%V2\n", + "print \"(c)Percentage recovery of H2S %.2f %%\"%Precovery\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Volume of gas entering per hour 68.63 m**3/h\n", + "(b)Volume of gas leaving per hour 62.89 m**3/h\n", + "(c)Percentage recovery of H2S 91.84 %\n" + ] + } + ], + "prompt_number": 17 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 4.11 pageno : 92" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "#N2 + 3H2 = 2NH3\n", + "V1 = 100. #m**3 ( 1 = N2) cubic metres\n", + "V2 = V1 * 3 # ( According to Avagadros principle, equal\n", + " #volumes of all gases under similar condition\n", + " # contains same no. of moles)\n", + " \n", + "print \"(a)Volume of hydrogen required at same condition = \",V2,\"m**3\"\n", + "P1 = 20. #bar \n", + "T1 = 350. #K nitrogen\n", + "P2 = 5. #bar\n", + "T2 = 290. #K hydrogen\n", + "\n", + "# Calculation and Result\n", + "V3 = 3 * V1 * P1 * T2 / ( P2 * T1)\n", + "print \"(b)Volume required at 50 bar and 290K = %.3f m**3\"%V3\n", + "m = 1000 #kg ( ammonia )\n", + "N = m / 17.03 #kmol\n", + "N1 = N/2. # ( nitrogen)\n", + "N2 = N * 3 / 2. #(hydrogen)\n", + "P3 = 50. #bar\n", + "T3 = 600. #K\n", + "Pstp = 1.01325 #bar\n", + "Tstp = 273.15 #K\n", + "Vstp = 22.414 #m**3/kmol\n", + "V1stp = N1 * Vstp\n", + "V4 = V1stp * Pstp * T3 / (P3 * Tstp) # ( nitrogen at 50 bar and 600K)\n", + "V5 = V4 * 2 # ( ammonia at 50 bar and 600K)\n", + "V6 = V4 * 3 # ( hydrogen at 50 bar and 600K)\n", + "print \"(c)Volume of nitrogen at 50 bar and 600K = %.1f m**3\"%V4\n", + "print \" Volume of hydrogen at 50 bar and 600K = %.1f m**3\"%V6\n", + "print \" Volume of ammonia at 50 bar and 600K = %.1f m**3\"%V5\n", + "\n", + "\n", + "# note : answers may vary because of rounding error." + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Volume of hydrogen required at same condition = 300.0 m**3\n", + "(b)Volume required at 50 bar and 290K = 994.286 m**3\n", + "(c)Volume of nitrogen at 50 bar and 600K = 29.3 m**3\n", + " Volume of hydrogen at 50 bar and 600K = 87.9 m**3\n", + " Volume of ammonia at 50 bar and 600K = 58.6 m**3\n" + ] + } + ], + "prompt_number": 21 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 4.12 pageno : 92" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "N = 100. #kmol producer gas\n", + "P1 = 25. #% ( Carbon monoxide )\n", + "P2 = 4. #% ( Carbon Dioxide )\n", + "P3 = 3. #% ( Oxygen )\n", + "P4 = 68. #% ( Nitrogen )\n", + "\n", + "# Calculation \n", + "N1 = N * P1/100 \n", + "N2 = N * P2/100 \n", + "N3 = N * P3/100 \n", + "N4 = N * P4/100 \n", + "NC = N1 + N2 \n", + "m = NC * 12 \n", + "Ngas = N / m #moles of gas for 1 kg of Carbon\n", + "Vstp = 22.4143 #m**3/kmol\n", + "Vstp1 = Vstp * Ngas \n", + "P = 1. #bar\n", + "T = 290. #k\n", + "Pstp = 1.01325 #bar\n", + "Tstp = 273.15 #K\n", + "V = T * Vstp1 * Pstp / (Tstp * P ) \n", + "print \"(a)Volume of gas at 1 bar and 290 K per kg Carbon = %.2f m**3\"%V\n", + "\n", + "#CO + 1/2 * O2 = CO2\n", + "Nrequired = N1/2 - N3 #(oxygen required)\n", + "Nsupplied = Nrequired * 1.2 \n", + "PO1 = 21. #% ( Oxygen percent in air)\n", + "Nair = Nsupplied * 100/PO1 \n", + "V1 = 100. #m**3 \n", + "Vair = V1 * Nair / N \n", + "print \"(b)Volume of air required = %.2f m**3\"%Vair\n", + "NCO2 = N2 + N1 \n", + "NO2 = Nsupplied - Nrequired \n", + "NN2 = N4 + (Vair * (1 - PO1/ 100)) \n", + "Ntotal = NCO2 + NO2 + NN2 \n", + "PCO2 = NCO2 * 100 / Ntotal \n", + "PO2 = NO2 * 100 / Ntotal \n", + "PN2 = NN2 * 100 / Ntotal \n", + "\n", + "# Result\n", + "print \"Percent composition of Carbon Dioxide = %.2f %%\"%PCO2\n", + "print \"Percent composition of Oxygen = %.2f %%\"%PO2\n", + "print \"Percent composition of Nitrogen = %.2f %%\"%PN2\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Volume of gas at 1 bar and 290 K per kg Carbon = 6.93 m**3\n", + "(b)Volume of air required = 54.29 m**3\n", + "Percent composition of Carbon Dioxide = 20.45 %\n", + "Percent composition of Oxygen = 1.34 %\n", + "Percent composition of Nitrogen = 78.21 %\n" + ] + } + ], + "prompt_number": 23 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 4.13 pageno : 94" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "#4HCl + O2 = 2Cl2 + 2H2O\n", + "n = 1. #mol ( Basis 1 mol of HCl )\n", + "NO2 = n / 4 \n", + "NO2supp = 1.5 * NO2 \n", + "Nair = NO2supp * 100 / 21 \n", + "V = 100. #m**3\n", + "Vair = V * Nair / n \n", + "print \"(a)Volume of air admitted = %.1f m**3\"%Vair\n", + "\n", + "# Calculation \n", + "P1 = 80. #% ( HCl converted)\n", + "Ncon = n * P1 /100 \n", + "N2 = Ncon/4 # oxygen required\n", + "NH2O = Ncon / 2 \n", + "NCl2 = Ncon / 2 \n", + "nHCl = n - Ncon \n", + "nO2 = NO2supp - N2 \n", + "Nnitro = Nair - NO2supp \n", + "Ntotal = nHCl + nO2 + NH2O + NCl2 + Nnitro \n", + "V1 = V * Ntotal \n", + "P1 = 1. #bar\n", + "T1 = 290. #K\n", + "P2 = 1.2 #bar\n", + "T2 = 400. #K\n", + "V2 = V1 * P1 * T2 / ( P2 * T1) \n", + "print \"(b)Volume of gas leaving = %.2f m**3\"%V2\n", + "VCl2 = NCl2 * V \n", + "Pstp = 1.01325 #bar\n", + "Tstp = 273. #K\n", + "Vstp = 22.4143 #m**3/kmol\n", + "Vstp1 = Tstp * P1 * VCl2 / (T1 * Pstp) \n", + "Nstp = Vstp1/Vstp \n", + "m = Nstp * 70.90 \n", + "print \"(c)Kilograms of Chlorine produced = %.1f kg\"%m\n", + "Ntotaldry = nHCl + nO2 + NCl2 + Nnitro #dry basis\n", + "p1 = nHCl*100/Ntotaldry \n", + "p2 = nO2*100/Ntotaldry \n", + "p3 = NCl2*100/Ntotaldry \n", + "p4 = Nnitro*100/Ntotaldry \n", + "\n", + "# Result\n", + "print \"(d)Percent composition of HCl in exit stream = %.2f %%\"%p1\n", + "print \" Percent composition of Oxygen in exit stream = %.1f %%\"%p2\n", + "print \" Percent composition of Chlorine in exit stream = %.2f %%\"%p3\n", + "print \" Percent composition of nitrogen in exit stream = %.2f %%\"%p4\n", + "\n", + "# note : answers may vary because of rouding error." + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Volume of air admitted = 178.6 m**3\n", + "(b)Volume of gas leaving = 297.21 m**3\n", + "(c)Kilograms of Chlorine produced = 117.6 kg\n", + "(d)Percent composition of HCl in exit stream = 9.15 %\n", + " Percent composition of Oxygen in exit stream = 8.0 %\n", + " Percent composition of Chlorine in exit stream = 18.30 %\n", + " Percent composition of nitrogen in exit stream = 64.54 %\n" + ] + } + ], + "prompt_number": 24 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 4.14 pageno: 95" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "# CO2 = CO + 1/2 * O2\n", + "P1 = 1. #bar \n", + "T1 = 3500. #K pressure\n", + "P2 = 1. #bar \n", + "T2 = 300. #K heated\n", + "V2 = 25. #L CO2\n", + "\n", + "# Calculation \n", + "V1 = V2 * P2 * T1 / ( P1 * T2 ) \n", + "\n", + "# Result\n", + "print \"(a)Final volume of gas if no dissociation occured = %.3f m**3\"%(V1/1000)\n", + "Pstp = 1.01325 #bar\n", + "Tstp = 273. #K\n", + "Vstp = 22.4143 #m**3\n", + "N2 = V2 * P2 * Tstp / ( Vstp * Pstp * T2) \n", + "\n", + "# let x be the fraction dissociated, then after dissociation,\n", + "# CO2 = (1 - x)mol, CO = xmol, O2 = (0.5*x)mol\n", + "#total moles = 1 - x + x + o.5 * x = 1 + 0.5 * x \n", + "V = 350. #L\n", + "N1 = V * P1 * Tstp / (Vstp * Pstp * T1) \n", + "\n", + "# 1 + 0.5 * x = N1, therefore\n", + "x = (N1 - 1) / 0.5 \n", + "p = x*100 \n", + "print \"(b)CO2 converted = %.f %%\"%p\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Final volume of gas if no dissociation occured = 0.292 m**3\n", + "(b)CO2 converted = 40 %\n" + ] + } + ], + "prompt_number": 28 + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/Stoichiometry_And_Process_Calculations/ch5.ipynb b/Stoichiometry_And_Process_Calculations/ch5.ipynb new file mode 100755 index 00000000..8cc243fb --- /dev/null +++ b/Stoichiometry_And_Process_Calculations/ch5.ipynb @@ -0,0 +1,497 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "Chapter 5 : Properties of Real Gases" + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.1 page no: 109" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "V = 0.6 #m**3 vessel\n", + "T = 473. #K temperature\n", + "N = 1. * 10 ** 3 #mol\n", + "R = 8.314 #Pa * m**3/molK\n", + "\n", + "# Calculation \n", + "P = N * R * T / (V * 10**5) \n", + "\n", + "# Result\n", + "print \"(a)Pressure calculated using ideal gas equation = %.2f bar\"%P\n", + "a = 0.4233 #N * m**4 / mol**2\n", + "b = 3.73 * 10**-5 #m**3/mol\n", + "P1 = (R*T/(V/N - b)-a/(V/N)**2)/10**5 \n", + "print \"(a)Pressure calculated using van der waals equation = %.2f bar\"%P1\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Pressure calculated using ideal gas equation = 65.54 bar\n", + "(a)Pressure calculated using van der waals equation = 58.13 bar\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.2 pageno : 110" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "P = 10.**7 #Pa \n", + "T = 500. #K molar volume\n", + "R = 8.314 #Pa * L / mol K\n", + "N = 1000.\n", + "\n", + "# Calculation \n", + "V = N * R * T / ( P * 1000) \n", + "\n", + "# Result\n", + "print \"(a)Volume of CO2 calculated using ideal gas equation = %.4e m**3\"%V\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Volume of CO2 calculated using ideal gas equation = 4.1570e-04 m**3\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.3 pageno : 111" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "V = 0.6 * 10**-3 #m**3\n", + "T = 473. #K vellel of volume\n", + "Tc = 405.5 #K temperature\n", + "Pc = 112.8 * 10 ** 5 #Pa pressure\n", + "R = 8.314 \n", + "\n", + "# Calculation \n", + "a = 0.4278 * (R**2) * (Tc ** 2.5)/Pc \n", + "b = 0.0867 * R * Tc / Pc \n", + "P1 = (R*T/(V - b) - a/((T**0.5)*V*(V + b)))/10**5 \n", + "\n", + "# Result\n", + "print \"Pressure developed by gas = %.2f bar\"%P1\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Pressure developed by gas = 57.87 bar\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.4 pageno : 112" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "P = 10.**6 #Pa\n", + "T = 373. #K molar volume\n", + "Tc = 405.5 #K temperature\n", + "Pc = 112.8 * 10 ** 5 #Pa pressure\n", + "R = 8.314 \n", + "\n", + "# Calculation \n", + "a = 0.4278 * (R**2) * (Tc ** 2.5)/Pc \n", + "b = 0.0867 * R * Tc / Pc \n", + "#P1 = (R*T/(V - b) - a/((T**0.5)*V*(V + b)))/10**5 \n", + "#10**6=((8.314*373)/(V-2.59*10**-5))-8.68/((373**0.5)*V*(V+2.59*10**-5) \n", + "#solving this we get,\n", + "V = 3.0 * 10**-3 #m**3/mol\n", + "\n", + "# Result\n", + "print \"molar volume of gas = %.e m**3/mol\"%V\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "molar volume of gas = 3e-03 m**3/mol\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.5 pageno : 112" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "B = -2.19 * 10**-4 #m**3/mol virial coefficients\n", + "C = -1.73 * 10**-8 #m**6/mol**2\n", + "P = 10. #bar molar volume\n", + "T = 500. #K\n", + "\n", + "# Calculation \n", + "#virial equation is given as, Z = PV/RT = 1 + B/V + C/V**2\n", + "#V = (RT/P)*(1 + B/V + C/V**2)\n", + "# now by assuming different values for V on RHS and checking for corresponding V on LHS, we have to assume such value of V on RHS by which we get the same value for LHS V\n", + "#by trial and error we get,\n", + "V = 3.92 * 10**-3 #m**3\n", + "\n", + "# Result\n", + "print \"Molar volume of methanol = %.3e m**3\"%V\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Molar volume of methanol = 3.920e-03 m**3\n" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.6 pageno : 120" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "T = 510. #K molar volume\n", + "P = 26.6 #bar \n", + "Tc = 425.2 #K temperature\n", + "Pc = 38. #bar pressure\n", + "Zc = 0.274 # compressibility factor\n", + "R = 8.314 \n", + "\n", + "# Calculation \n", + "Pr = P / Pc \n", + "Tr = T / Tc \n", + "\n", + "# Result\n", + "print \"Pr = \",Pr\n", + "print \"Tr = %.2f\"%Tr\n", + "\n", + "#From fig. 5.4 and 5.5 from the text book\n", + "Z = 0.865 \n", + "D = 0.15 \n", + "Z1 = Z + D * ( Zc - 0.27) \n", + "V = R * T * Z1 / (P * 10**5) \n", + "print \"Molar volume of n-butane = %.4e m**3/mol\"%V\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Pr = 0.7\n", + "Tr = 1.20\n", + "Molar volume of n-butane = 1.3798e-03 m**3/mol\n" + ] + } + ], + "prompt_number": 11 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.7 pageno : 120" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "T = 510. #K molar volumes\n", + "P = 26.6 #bar\n", + "Tc = 425.2 #K temperature\n", + "Pc = 38. #bar pressure\n", + "w = 0.193 # acentric factor\n", + "R = 8.314 \n", + "\n", + "# Calculation \n", + "Pr = P / Pc \n", + "Tr = T / Tc \n", + "\n", + "# Result\n", + "print \"Pr = \",Pr\n", + "print \"Tr = %.2f\"%Tr\n", + "\n", + "#From fig. 5.6 and 5.7 from the text book\n", + "Z0 = 0.855 \n", + "Z1 = 0.042 \n", + "Z = Z0 + w*Z1 \n", + "print \"Z = %.4f\"%Z\n", + "V = R * T * Z / (P * 10**5) \n", + "\n", + "print \"Molar volume of n-butane = %.4e m**3/mol\"%V\n", + "\n", + "# note : answer may vary because of rounding error." + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Pr = 0.7\n", + "Tr = 1.20\n", + "Z = 0.8631\n", + "Molar volume of n-butane = 1.3758e-03 m**3/mol\n" + ] + } + ], + "prompt_number": 14 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.8 pageno : 122" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from numpy import *\n", + "# variables \n", + "P = 6000. #kPa ethane\n", + "T = 325. #K ethane\n", + "xn2 = 0.4 # gas mixture\n", + "xethane = 0.6 \n", + "an2 = 0.1365 #N m**4 / mol**2 nitrogen\n", + "\n", + "# Calculation \n", + "bn2 = 3.86 * 10**-5 #m**3/mol\n", + "aethane = 0.557 #N m**4 / mol**2\n", + "bethane = 6.51 * 10**-5 #m**3/mol\n", + "Pcn2 = 3394. #kPa\n", + "Tcn2 = 126.2 #K\n", + "Pcethane = 4880. #kPa\n", + "Tcethane = 305.4 #K\n", + "R = 8.314 \n", + "\n", + "\n", + "# Result\n", + "V = R * T / (P*1000) \n", + "print \"(a)Molar volume by ideal gas equation = %.3e m**3/mol\"%V\n", + "\n", + "\n", + "a = (xn2 * (an2**0.5) + xethane * (aethane**0.5))**2 \n", + "b = (xn2*bn2 + xethane*bethane) \n", + "#substituting the above values in van der waals equation, and solving, we get\n", + "#V^3 - 5.0484*10^-4V^2+5.9117*10^-8V-3.2214*10^-12=0\n", + "#Using co-efficients from the above equation,\n", + "coeff = [1, -5.0484e-4, 5.9117e-8, -3.2217e-12]\n", + "x = roots(coeff)\n", + "y = x[0]\n", + "print \"(b)Molar volume by van der waals equation =\",round((y.real)/1e-4,3),\"*10^-4 m**3/mol\"\n", + "\n", + "\n", + "Prin2 = P/Pcn2 \n", + "Trin2 = T/Tcn2 \n", + "Priethane = P/Pcethane \n", + "Triethane = T/Tcethane \n", + "# using compressibilty chart, \n", + "Zn2 = 1 \n", + "Zethane = 0.42 \n", + "Z = xn2 * Zn2 + xethane * Zethane \n", + "V2 = Z * R * T / P * (10**-3)\n", + "print \"(c)Molar volume based on compressibilty factor = %.2e m**3/mol\"%V2\n", + "\n", + "\n", + "Pri1n2 = xn2*P/Pcn2 \n", + "Tri1n2 = T/Tcn2 \n", + "Pri1ethane = xethane*P/Pcethane \n", + "Tri1ethane = T/Tcethane \n", + "# using compressibilty chart, \n", + "Zn21 = 1. \n", + "Zethane1 = 0.76 \n", + "Z1 = xn2 * Zn21 + xethane * Zethane1 \n", + "V3 = (Z1 * R * T / P ) * (10**-3)\n", + "print \"(c)Molar volume based on daltons law = %.3e m**3/mol\"%V3\n", + "\n", + "\n", + "Tc = xn2 * Tcn2 + xethane * Tcethane \n", + "Pc = xn2 * Pcn2 + xethane * Pcethane \n", + "Zc = 0.83 \n", + "V4 = Zc * R *T / P * (10**-3)\n", + "print \"(d)Molar volume by kays method = %.3e m**3/mol\"%V4\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Molar volume by ideal gas equation = 4.503e-04 m**3/mol\n", + "(b)Molar volume by van der waals equation = 3.68 *10^-4 m**3/mol\n", + "(c)Molar volume based on compressibilty factor = 2.94e-04 m**3/mol\n", + "(c)Molar volume based on daltons law = 3.855e-04 m**3/mol\n", + "(d)Molar volume by kays method = 3.738e-04 m**3/mol\n" + ] + } + ], + "prompt_number": 9 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.9 page no : 124" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "P1 = 40. #% ( nitrogen )\n", + "P2 = 60. #% ( ethane )\n", + "T = 325. #K ethane\n", + "\n", + "# Calculation \n", + "V = 4.5 * 10**-4 #m**3/mol\n", + "a1 = 0.1365 #N*m**4/mol**2\n", + "b1 = 3.86 * 10 ** -5 #m**3/mol\n", + "a2 = 0.557 #N*m**4/mol**2\n", + "b2 = 6.51 * 10 ** -5 #m**3/mol\n", + "Pc1 = 3394. #kPa\n", + "Tc1 = 126.1 #K\n", + "Pc2 = 4880. #kPa\n", + "Tc2 = 305.4 #K\n", + "R = 8.314 \n", + "Pideal = R * T / (V * 1000) #kPa\n", + "\n", + "# Result\n", + "print \"(a)Pressure of Gas by the ideal gas equation = %.f kPa\"%Pideal\n", + "y1 = P1/100. \n", + "y2 = P2/100. \n", + "a = (y1 * (a1**(1./2)) + y2 * (a2**(1./2)))**2 \n", + "b = y1 * b1 + y2 * b2 \n", + "Pv = ((R * T / (V - b)) - a / (V**2))/1000 \n", + "print \"(b)Pressure of Gas by Van der waals equation = %.f kPa\"%Pv\n", + "Tc = y1*Tc1 + y2*Tc2 \n", + "Pc = y1*Pc1 + y2*Pc2 \n", + "Vc = R * Tc / Pc #Pseudo critical ideal volume\n", + "Vr = V / Vc #Pseudo reduced ideal volume\n", + "Tr = T / Tc #Pseudo reduced temperature\n", + "\n", + "#From fig 5.3, we get Pr = 1.2\n", + "Pr = 1.2 \n", + "Pk = Pr * Pc \n", + "print \"(c)Pressure of Gas by the Kays method = %.f kPa\"%Pk\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Pressure of Gas by the ideal gas equation = 6005 kPa\n", + "(b)Pressure of Gas by Van der waals equation = 5080 kPa\n", + "(c)Pressure of Gas by the Kays method = 5143 kPa\n" + ] + } + ], + "prompt_number": 22 + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/Stoichiometry_And_Process_Calculations/ch6.ipynb b/Stoichiometry_And_Process_Calculations/ch6.ipynb new file mode 100755 index 00000000..8a560517 --- /dev/null +++ b/Stoichiometry_And_Process_Calculations/ch6.ipynb @@ -0,0 +1,354 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "Chapter 6 : Vapour Pressure" + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 6.1 pageno : 133" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "P = 500. #kPa liquid\n", + "SV = 0.2813 #m**3/kg wet steam\n", + "\n", + "# Calculation \n", + "Vsaturatedl = 1.093 * 10**-3 #m**3/kg\n", + "Vsaturatedv = 0.3747 #m**3/kg\n", + "\n", + "# let the fraction of vapour be y\n", + "#(1-y)*Vsaturatedl + y*Vsaturatedv = SV\n", + "#then we get, (1-y)*(1.093*10**-3) + y*(0.3747) = 0.2813\n", + "y = (SV - Vsaturatedl)/(Vsaturatedv - Vsaturatedl) \n", + "P1 = y * 100 \n", + "P2 = 100 - P1 \n", + "\n", + "# Result\n", + "print \"Percentage of Vapour = %.f %%\"%P1\n", + "print \"Percentage of Liquid = %.f %%\"%P2\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Percentage of Vapour = 75 %\n", + "Percentage of Liquid = 25 %\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 6.2 pageno : 134" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import math \n", + "\n", + "# Variables \n", + "T1 = 363. #K water\n", + "T2 = 373. #K water\n", + "P2s = 101.3 #kPa pressure\n", + "\n", + "# Calculation \n", + "J = 2275. * 18 #kJ/kmol\n", + "R = 8.314 #kJ/kmolK\n", + "#ln (P2s/P1s) = J * (1/T1 - 1/T2) / R\n", + "P1s = P2s/math.exp(J * (1/T1 - 1/T2) / R) \n", + "\n", + "# Result\n", + "print \"Vapour pressure of water at 363 K = %.2f kPa\"%P1s\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Vapour pressure of water at 363 K = 70.41 kPa\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 6.3 pageno : 135" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import math \n", + "\n", + "# Variables \n", + "P1s = 194.9 #kPa acetone\n", + "P2s = 8.52 #kPa pressure\n", + "T1 = 353. #K acetone\n", + "T2 = 273. #K acetone\n", + "T3 = 300. #K dry air\n", + "Pair = 101.3 #kPa dry air\n", + "#math.log (P2s/P1s) = J * (1/T1 - 1/T2) / R\n", + "#let J / R = L\n", + "\n", + "# Calculation \n", + "L = math.log (P2s/P1s)/(1./T1 - 1/T2) \n", + "P3s = P1s * math.exp(L * (1./T1 - 1/T3)) \n", + "Ptotal = P3s + Pair #at saturation vapour pressure = partial pressure\n", + "\n", + "# Result \n", + "print \"(a)Final pressure of the mixture = %.2f kPa\"%Ptotal\n", + "MP = P3s * 100 / Ptotal \n", + "# mole percent = moles of acetone * 100 / total moles\n", + "#= Partial pressure of acetone * 100 / total Pressure\n", + "print \"(b)Mole percent of acetone in the final mixture = %.1f %%\"%MP\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Final pressure of the mixture = 130.83 kPa\n", + "(b)Mole percent of acetone in the final mixture = 22.6 %\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 6.4 pageno : 137" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import math \n", + "\n", + "\n", + "# Variables \n", + "A = 13.8587 # antone constants for n-heptane\n", + "B = 2911.32 \n", + "C = 56.56 \n", + "T1 = 325. #K\n", + "#Pressure at normal condition = 101.3kPa\n", + "P2 = 101.3 #kPa\n", + "\n", + "# Calculation \n", + "#Antoine equation - lnP = A - B / (T - C)\n", + "lnP = A - (B / (T1 - C)) \n", + "P1 = math.exp(lnP) \n", + "\n", + "# Result \n", + "print \"(a)Vapour pressure of n-heptane at 325K = %.2f kPa\"%P1\n", + "T2 = B/(A - math.log(P2)) + C \n", + "print \"(b)Normal boiling point of n-heptane = %.2f K\"%T2\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Vapour pressure of n-heptane at 325K = 20.36 kPa\n", + "(b)Normal boiling point of n-heptane = 371.62 K\n" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 6.5 pageno : 140" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "%pylab inline\n", + "\n", + "from matplotlib.pyplot import *\n", + "\n", + "# variables \n", + "T = [273, 293, 313, 323, 333, 353, 373];\n", + "Ps = [0.61, 2.33, 7.37, 12.34, 19.90, 47.35, 101.3];\n", + "\n", + "# Calculation and Result\n", + "plot(T,Ps);\n", + "T1 = [273, 353]\n", + "Ps1 = [8.52, 194.9]\n", + "plot(T,Ps);\n", + "suptitle(\"Construction of the cox chart\")\n", + "xlabel(\"Temperature, K\")\n", + "ylabel(\"Pressure, kPa\")\n", + "show()\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Populating the interactive namespace from numpy and matplotlib\n" + ] + }, + { + "output_type": "stream", + "stream": "stderr", + "text": [ + "WARNING: pylab import has clobbered these variables: ['draw_if_interactive']\n", + "`%pylab --no-import-all` prevents importing * from pylab and numpy\n" + ] + }, + { + "metadata": {}, + "output_type": "display_data", + "png": "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\nEBGRVv8PkUOu8xTNWfQAAAAASUVORK5CYII=\n", + "text": [ + "<matplotlib.figure.Figure at 0x27db050>" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 6.6 page no : 143" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "%pylab inline\n", + "\n", + "import math \n", + "from matplotlib.pyplot import *\n", + "\n", + "# Variables \n", + "Pswater1 = 6.08; #kPa \n", + "T1 = 313.; #K\n", + "\n", + "\n", + "# Calculation \n", + "#lnPs = 16.26205 - 3799.887/(T - 46.854)\n", + "Tb1 =3799.887/(16.26205 - math.log(Pswater1)) + 46.854;\n", + "print \"boiling point of water at 6.08kPa vapour pressure = %.2f K\"%Tb1\n", + "Pswater2 = 39.33; #kPa\n", + "T2 = 353.; #K\n", + "Tb2 =3799.887/(16.26205 - math.log(Pswater2)) + 46.854;\n", + "\n", + "# Result \n", + "print \"boiling point of water at 39.33 kPa vapour pressure = %.2f K\"%Tb2\n", + "Tb = [Tb1 ,Tb2];\n", + "T = [T1 ,T2];\n", + "plot(T,Tb);\n", + "suptitle(\"Equal pressure reference plot for sulphuric acid\")\n", + "xlabel(\"Boiling point of solution, K\")\n", + "ylabel(\"Boiling point of water, K\")\n", + "show()\n", + "T3 = 333.; #K\n", + "\n", + "#corresponding to T3 on x axis, on y we get\n", + "Tb3 = 329.; #K\n", + "Pswater3 = math.exp(16.26205 - 3799.887/(Tb3 - 46.854));\n", + "print \"Vapour pressure of solution at 333K %.2f kPa\"%Pswater3\n", + "\n", + "# deviation\n", + "deviation = .04/16.53 * 100\n", + "print \"%% deviation = %.2f %%\"%deviation" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Populating the interactive namespace from numpy and matplotlib\n", + "boiling point of water at 6.08kPa vapour pressure = 309.69 K\n", + "boiling point of water at 39.33 kPa vapour pressure = 348.67 K\n" + ] + }, + { + "output_type": "stream", + "stream": "stderr", + "text": [ + "WARNING: pylab import has clobbered these variables: ['draw_if_interactive']\n", + "`%pylab --no-import-all` prevents importing * from pylab and numpy\n" + ] + }, + { + "metadata": {}, + "output_type": "display_data", + "png": "iVBORw0KGgoAAAANSUhEUgAAAYoAAAEfCAYAAABf1YHgAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XlcVNX7wPHPgBBSiFuuVJhLOgLDgIkm5hgqGmouaWkZ\nlrZotliuLWqmaaX2U/vS1xa3Njcql9QkAxWzFJFcMEOF3MggBTdwhDm/P+6XSWQVmRmQ5/16+YoZ\n7j33mcs0z5xz7n2OTimlEEIIIYrg5OgAhBBCVGySKIQQQhRLEoUQQohiSaIQQghRLEkUQgghiiWJ\nQgghRLEkUdiBs7MzRqPR+u+9994r92N4e3tz5syZcm+3ovv999/x9/cnMDCQo0ePOjqc6zJlyhRm\nz55d7DZLliwhNTW10N/Z+7WnpKTg6+t7w9uU5NSpUwwYMOCG2ihOhw4dCn1+6NChREZG2uy4lVk1\nRwdQFbi7u7Nnzx6bHkOn05V539zcXJydncsxmqJZLBacnK7v+0lx8X333XcMGDCA119/3aYx2EJp\n/maLFy/Gx8eHhg0bFvjd9b72vFumbuS9Yms5OTk0atSIlStX2uwY27dvL/R5nU5Xoc+NIzn+/5Yq\nbOPGjbRq1YrAwEBefPFFevXqBRT8punj48OxY8cA6Nu3L23atMHHx4dPPvmkxGPcdtttvPLKK/j4\n+NClSxfS09MBMJlMjB49mnvvvZd58+axe/duTCYTbdq0oXv37vz1118AzJs3j9atW2MwGBg0aBAA\nW7ZssfaOAgICuHDhAjExMdb4AUaNGsWSJUsArbczYcIEAgMDWblyJZs2beK+++4jMDCQgQMHcvHi\nxQJxlya+9evXM3fuXD766CNCQkIA+OKLLwgKCsJoNPLcc89hsVis52HMmDH4+/uzY8eOYrd74403\n8Pf3p3379vz9998AnD59mr59++Lv74+/vz+//PJLsce7mre3N+PHj8fPz4+goCCOHDlSYJuEhATa\ntWuHwWCgX79+ZGRksGrVKuLi4njssccICAggOzvbun1hr33OnDn4+vri6+vL3LlzAe0b/j333EN4\neDi+vr6cOHEi33EnTJhg/fuOGzcOKPjN+rbbbisQ7+LFi3nooYfo3LkzLVq0YOrUqdbf5ebm8swz\nz+Dj40NoaKg1bpPJxO7duwFIT0+nSZMm1rZ69+5NSEgIXbt25c8//8THx8fa1pgxY/D19cVgMPDh\nhx8WiOWTTz6hbdu2+Pv78/DDD5OVlVXs3yzv9SilGDVqFC1btqRr1678/fffyP3HRVDC5pydnZW/\nv7/134oVK1RWVpa644471OHDh5VSSg0cOFD16tVLKaXUlClT1KxZs6z7+/j4qD///FMppdSZM2eU\nUkpdunRJ+fj4WB97e3urf/75p8CxdTqd+uqrr5RSSk2dOlWNGjVKKaWUyWRSzz//vFJKqStXrqj2\n7dur9PR0pZRSy5YtU0899ZRSSqlGjRops9mslFIqMzNTKaVUr1691M8//6yUUurixYsqJydHRUdH\nq549e1qPO2rUKLVkyRJrbO+//75SSqm0tDR1//33q0uXLimllJo5c6aaOnVqgbhLG9+UKVPU7Nmz\nlVJKJSYmql69eqmcnByllFIjRoxQS5cutZ6HlStXlmq7devWKaWUGjdunJo2bZr17zN37lyllFIW\ni0VlZmYW287VvL291TvvvKOUUmrp0qXW83R17L6+vmrr1q1KKaUmTZqkXn75Zet52L17d4E2r90/\nLi5O+fr6qkuXLqkLFy6o1q1bqz179qjk5GTl5OSkfv311wL7p6enq3vuucf6OO/vO3ToULVq1Srr\n87fddptSSqnk5GTl4+OjlFJq0aJFqmHDhurMmTMqKytL+fj4qLi4OJWcnKyqVaumfvvtN+t5++KL\nLwq8lrS0NOXt7W1ty8vLS509e7bAcSIiItSAAQNUbm6uUurf9//Vrn7fv/HGG2r+/PnWY+f9zXJz\nc62vL+/1REZGqq5duyqLxaJOnTqlatasqSIjIws911WdDD3ZQfXq1QsMPSUkJNCkSROaNm0KwOOP\nP87HH39cYltz587lu+++A+D48eMkJSXRtm3bIrd3cnLikUcesR6jX79+1t/lPf/7779z4MABunTp\nAmjf4ho1agSAn58fgwcPpk+fPvTp0wfQxnhHjx7NY489Rr9+/WjcuHGJcecd65dffiExMZH77rsP\nALPZbP25qH2Ki08pZf0WuHnzZnbv3k2bNm0AyMrKokGDBoA2T9S/f/8St3N1dSUsLAyAwMBAoqKi\nAIiOjuaLL74AtCGKGjVqsHTp0iLbuVZeb+zRRx9l9OjR+X537tw5MjMz6dixIwDh4eH5xuhVMd9y\n834XGxtLv379qF69OgD9+vVj27Zt9O7dm7vuuqvQ90jNmjVxc3Nj2LBh9OzZk549exZ5nMJ069aN\n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\nIUSx/h89BNR1L4MHOAAAAABJRU5ErkJggg==\n", + "text": [ + "<matplotlib.figure.Figure at 0x46afd50>" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Vapour pressure of solution at 333K 16.35 kPa\n", + "% deviation = 0.24 %\n" + ] + } + ], + "prompt_number": 3 + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/Stoichiometry_And_Process_Calculations/ch7.ipynb b/Stoichiometry_And_Process_Calculations/ch7.ipynb new file mode 100755 index 00000000..e679965d --- /dev/null +++ b/Stoichiometry_And_Process_Calculations/ch7.ipynb @@ -0,0 +1,945 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "Chapter 7 : Solutions and Phase Behaviour" + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 7.1 pageno : 155" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "Pas = 71.2 #kPa n-heptane\n", + "Pbs = 48.9 #kPa toluene\n", + "P = 65. #kPa equilibrium\n", + "\n", + "# Calculation \n", + "#P=(Pas-Pbs)*xa+Pbs,xa=mole fraction of n-heptane,liq. condition,therefore\n", + "xa = (P - Pbs)/(Pas - Pbs) \n", + "#ya = Pa / P , Vapour condition\n", + "ya = Pas * xa / P \n", + "P1 = xa * 100 \n", + "P2 = ya * 100 \n", + "\n", + "# Result\n", + "print \"Percentage of hepatne in liquid = %.1f %%\"%P1\n", + "print \"Percentage of hepatne in vapour = %.1f %%\"%P2\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Percentage of hepatne in liquid = 72.2 %\n", + "Percentage of hepatne in vapour = 79.1 %\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 7.2 pageno : 155" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "P1 = 100. #kPa ( Vapour pressure of liq A )\n", + "P2 = 60. #kPa ( Vapour pressure of liq B )\n", + "T = 320. #K\n", + "\n", + "# Calculation \n", + "#Pa = xa * P1 = 100 * xa\n", + "#Pa = xb * P2 = 60 * xb\n", + "#P = xa * P1 + ( 1 - xa )* P2\n", + "# = 100xa + ( 1 - xa )* 60\n", + "# = 60 + 40*xa\n", + "#ya = Pa / P\n", + "#0.5 = 100*xa / ( 60 + 40 * xa)\n", + "xa = 60 * 0.5 / (100 - 20) \n", + "Per1 = xa * 100 \n", + "\n", + "# Result\n", + "print \"(a)Percentage of A in liquid = \",Per1,\"%\"\n", + "Ptotal = 60 + 40 * xa \n", + "print \"(b)Total pressure of the vapour = \",Ptotal,\"kPa\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Percentage of A in liquid = 37.5 %\n", + "(b)Total pressure of the vapour = 75.0 kPa\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 7.3 pageno : 156" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "xa = 0.25 # liquid mixture\n", + "xb = 0.30 \n", + "\n", + "# Calculation \n", + "xc = 1 - xa - xb \n", + "Ptotal = 200. #kPa\n", + "Pcs = 50. #kPa(Vapour pressure of c)\n", + "Pc = xc * Pcs #(partial pressure of c)\n", + "yc = Pc / Ptotal \n", + "yb = 0.5 \n", + "ya = 1 - yb - yc \n", + "per1 = ya * 100 \n", + "\n", + "# Result\n", + "print \"Percentage of A in vapour = \",per1,\"%\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Percentage of A in vapour = 38.75 %\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 7.4 pageno : 156" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "P = 101.3 #kPa flash vaporization\n", + "Pbs = 54.21 #kPa pressure\n", + "Pas = 136.09 #kPa temperature\n", + "xf = 0.65 # liquid mixture\n", + "\n", + "# Calculation \n", + "xw = (P - Pbs)/(Pas - Pbs) \n", + "yd = xw * Pas / P \n", + "# f = ( xf - xw ) / ( yd - xw )\n", + "f = ( xf - xw ) / ( yd - xw ) \n", + "per1 = f * 100\n", + "\n", + "# Result \n", + "print \"mole percent of the feed that is vapourised = %.1f %%\"%per1\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "mole percent of the feed that is vapourised = 37.9 %\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 7.5 pageno : 157" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "%pylab inline\n", + "\n", + "from matplotlib.pyplot import *\n", + "from numpy import zeros\n", + "\n", + "# variables \n", + "T = [371.4, 378 ,383 ,388, 393, 398.6]\n", + "Pas = [101.3, 125.3, 140 ,160, 179.9, 205.3]\n", + "Pbs = [44.4, 55.6, 64.5, 74.8, 86.6, 101.3]\n", + "Ptotal = 101.3 #kPa\n", + "\n", + "# Calculation \n", + "x = zeros(6)\n", + "y = zeros(6)\n", + "for i in range(6):\n", + " x[i] = (Ptotal - Pbs[i])/(Pas[i] - Pbs[i]) \n", + " y[i] = x[i] * Pas[i] / Ptotal \n", + "\n", + "# Result\n", + "#subplot(2,1,1)\n", + "plot(x,T,'-o') \n", + "plot(y,T,'-x') \n", + "suptitle(\"Boiling point diagram\")\n", + "xlabel(\"Mole fraction, x or y\")\n", + "ylabel(\"Temperature, K\")\n", + "show()\n", + "\n", + "\n", + "# part 2\n", + "\n", + "# variables \n", + "T = [371.4, 378, 383, 388, 393, 398.6]\n", + "Pas = [101.3, 125.3, 140, 160, 179.9, 205.3]\n", + "Pbs = [44.4, 55.6, 64.5, 74.8, 86.6, 101.3]\n", + "Ptotal = 101.3 #kPa\n", + "x = zeros(6)\n", + "y = zeros(6)\n", + "\n", + "# Calculation \n", + "for i in range(6):\n", + " x[i] = (Ptotal - Pbs[i])/(Pas[i] - Pbs[i]) \n", + " y[i] = x[i] * Pas[i] / Ptotal \n", + "\n", + "w = x \n", + "# Result\n", + "#subplot(2,1,2)\n", + "plot(x,w) \n", + "plot(x,y,'-o')\n", + "suptitle(\"Equilibrium curve\")\n", + "xlabel(\"x, mole fraction in liquid\")\n", + "ylabel(\"y, mole fraction in vapour\")\n", + "show()\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Populating the interactive namespace from numpy and matplotlib\n" + ] + }, + { + "metadata": {}, + "output_type": "display_data", + "png": "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\n", + "text": [ + "<matplotlib.figure.Figure at 0x31cbbd0>" + ] + }, + { + "metadata": {}, + "output_type": "display_data", + "png": "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\niJz/A9vzOGCUmCVhAAAAAElFTkSuQmCC\n", + "text": [ + "<matplotlib.figure.Figure at 0x3e71b10>" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 7.6 page no : 158" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import math\n", + "\n", + "# variables\n", + "p = 100 # pressure Kpa\n", + "# from table\n", + "n_heptaneA = 13.8587\n", + "n_hexaneA = 13.8216\n", + "n_heptaneB = 2911.32\n", + "n_hexaneB = 2697.55\n", + "n_heptaneC = 56.51\n", + "n_hexaneC = 48.78\n", + "xA = .25\n", + "\n", + "# Calculations and Results\n", + "\n", + "# for T = 360 Initial guess\n", + "T1 = 360\n", + "lnPaS = n_hexaneA - (n_hexaneB/(T1- n_hexaneC))\n", + "PaS = round(math.e**lnPaS,2)\n", + "lnPbS = n_heptaneA - (n_heptaneB/(T1- n_heptaneC))\n", + "PbS = round(math.e**lnPbS,2)\n", + "P = xA*PaS + (1 - xA)*PbS\n", + "\n", + "print \"P = %.1f kPa\" %P\n", + "\n", + "# Since total pressure < 100 Kpa, equilibrium temperature is not equal to 360K.\n", + "# for T = 365 - Assume\n", + "T1 = 365\n", + "lnPaS = n_hexaneA - (n_hexaneB/(T1- n_hexaneC))\n", + "PaS = round(math.e**lnPaS,2)\n", + "lnPbS = n_heptaneA - (n_heptaneB/(T1- n_heptaneC))\n", + "PbS = round(math.e**lnPbS,2)\n", + "P = xA*PaS + (1 - xA)*PbS\n", + "\n", + "print \"P = %.2f kPa\"%P\n", + "\n", + "# As the pressure > 100 kPa, the temperature lies between 360 and 365 K.\n", + "# for T = 361.125 -- assumption\n", + "T1 = 361.125\n", + "lnPaS = n_hexaneA - (n_hexaneB/(T1- n_hexaneC))\n", + "PaS = round(math.e**lnPaS,2)\n", + "lnPbS = n_heptaneA - (n_heptaneB/(T1- n_heptaneC))\n", + "PbS = round(math.e**lnPbS,2)\n", + "P = xA*PaS + (1 - xA)*PbS\n", + "\n", + "print \"P = %.f kPa\"%P\n", + "print \"Therefore, the bubble point temperature = %.3f K\"%T1 # last assumed for T1\n", + "\n", + "\n", + "# Part b\n", + "Pa = xA*PaS\n", + "Ya = Pa/P\n", + "\n", + "print \"Partial pressure of n-Hexane in vapour at the bubble point is = %.2f kPa\"%Pa\n", + "print \"Mole fraction of hexane in the vapour is Ya = %.4f\"%Ya\n", + "print \"The vapour contains %.2f %% hexane and %.2f %% heptane.\"%(Ya*100,(1-Ya)*100)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "P = 96.7 kPa\n", + "P = 112.04 kPa\n", + "P = 100 kPa\n", + "Therefore, the bubble point temperature = 361.125 K\n", + "Partial pressure of n-Hexane in vapour at the bubble point is = 44.65 kPa\n", + "Mole fraction of hexane in the vapour is Ya = 0.4465\n", + "The vapour contains 44.65 % hexane and 55.35 % heptane.\n" + ] + } + ], + "prompt_number": 25 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 7.7 page no : 159" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import math \n", + "\n", + "# Variables \n", + "#lnPas = 14.5463 - 2940.46/(T - 35.93)\n", + "#lnPbs = 14.2724 - 2945.47 / (T - 49.15)\n", + "#xa = (P - Pbs)/(Pas - Pbs)\n", + "#Ya = Pas * (P - Pbs)/(P * (Pas - Pbs))\n", + "Ya = 0.4 # vapour phase\n", + "P = 65. #kPa\n", + "#various temperature value are assumed and tried till LHS = RHS, we get\n", + "T = 334.15 #K\n", + "\n", + "# Calculation \n", + "Pas = math.exp(14.5463 - 2940.46/(T - 35.93)) \n", + "Pbs = math.exp(14.2724 - 2945.47 / (T - 49.15)) \n", + "xa = (P - Pbs)/(Pas - Pbs) \n", + "\n", + "# Result \n", + "print \"(a)The Dew point temperature at 65 kPa = \",T,\"K\"\n", + "print \" Concentration of the first drop of liquid = %.2f\"%xa\n", + "T1 = 327. #K\n", + "Pas1 = math.exp(14.5463 - 2940.46/(T1 - 35.93)) \n", + "Pbs1 = math.exp(14.2724 - 2945.47 / (T1 - 49.15)) \n", + "xa1 = Ya * Pbs1 / (Pas1 - Ya*(Pas1 - Pbs1)) \n", + "P1 = xa1 * Pas1 / Ya \n", + "print \"(b)The dew point pressure at 327 K = %.2f kPa\"%P1\n", + "print \" Concentration at 327K = %.4f\"%xa1\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)The Dew point temperature at 65 kPa = 334.15 K\n", + " Concentration of the first drop of liquid = 0.24\n", + "(b)The dew point pressure at 327 K = 50.09 kPa\n", + " Concentration at 327K = 0.2354\n" + ] + } + ], + "prompt_number": 14 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 7.8 pageno : 163" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "MW = 44.032 # mole fraction of acetaldehyde\n", + "Mwater = 18.016 \n", + "x = 2. #% acetaldehyde weight\n", + "Pa = 41.4 #kPa solution\n", + "\n", + "# Calculation \n", + "Mfr = (x/MW)/(x/MW + (100-x)/Mwater) \n", + "#henry's law gives Pa = Ha * xa\n", + "Ha = Pa / Mfr \n", + "Molality = 0.1 \n", + "Mfr1 = Molality / (1000/Mwater + Molality) \n", + "Pa1 = Ha * Mfr1 \n", + "\n", + "# Result\n", + "print \"Partial Pressure = %.f kPa\"%Pa1\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Partial Pressure = 9 kPa\n" + ] + } + ], + "prompt_number": 16 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 7.9 pageno : 177" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import math \n", + "\n", + "# Variables \n", + "#1 - pentane, 2 - hexane, 3 - heptane\n", + "\n", + "x1 = 0.6 \n", + "x2 = 0.25 \n", + "x3 = 0.15 \n", + "A1 = 13.8183 \n", + "A2 = 13.8216 \n", + "A3 = 13.8587 \n", + "B1 = 2477.07 \n", + "B2 = 2697.55 \n", + "B3 = 2911.32 \n", + "C1 = 39.94 \n", + "C2 = 48.78 \n", + "C3 = 56.51 \n", + "#As raoults law is applicable, Ki = yi/xi = Pis/P\n", + "#yi = xi*Pis/P\n", + "#ln P = A- B/(T-C)\n", + "#Assuming,\n", + "P = 400. #kPa\n", + "T = 369.75 #K\n", + "\n", + "# Calculation \n", + "Pas1 = math.exp(A1 - B1 / (T - C1)) \n", + "Pas2 = math.exp(A2 - B2 / (T - C2)) \n", + "Pas3 = math.exp(A3 - B3 / (T - C3)) \n", + "Yi = (x1*Pas1 + x2*Pas2 + x3*Pas3)/P \n", + "print \"(a)bubble point temperature of the mixture = \",T,\"K\"\n", + "y1 = x1*Pas1/P \n", + "y2 = x2*Pas2/P \n", + "y3 = x3*Pas3/P \n", + "\n", + "# Result \n", + "print \"(b)composition of n-pentane in vapour = %.2f %%\"%(y1*100)\n", + "print \"composition of n-hexane in vapour = %.2f %%\"%(y2*100)\n", + "print \"composition of n-heptane in vapour = %.2f %%\"%(y3*100)\n", + "T1 = 300. #K\n", + "Ps1 = math.exp(A1 - B1 / (T1 - C1)) \n", + "Ps2 = math.exp(A2 - B2 / (T1 - C2)) \n", + "Ps3 = math.exp(A3 - B3 / (T1 - C3)) \n", + "P1 = x1*Ps1 + x2*Ps2 + x3*Ps3 \n", + "print \"(c)Bubble point pressure = %.1f kPa\"%P1\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)bubble point temperature of the mixture = 369.75 K\n", + "(b)composition of n-pentane in vapour = 82.32 %\n", + "composition of n-hexane in vapour = 14.08 %\n", + "composition of n-heptane in vapour = 3.60 %\n", + "(c)Bubble point pressure = 50.4 kPa\n" + ] + } + ], + "prompt_number": 18 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 7.10 pageno : 178" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import math \n", + "\n", + "# Variables \n", + "#1 - pentane, 2 - hexane, 3 - heptane\n", + " \n", + "y1 = 0.6 \n", + "y2 = 0.25 \n", + "y3 = 0.15 \n", + "A1 = 13.8183 \n", + "A2 = 13.8216 \n", + "A3 = 13.8587 \n", + "B1 = 2477.07 \n", + "B2 = 2697.55 \n", + "B3 = 2911.32 \n", + "C1 = 39.94 \n", + "C2 = 48.78 \n", + "C3 = 56.51 \n", + "P = 400. #kPa\n", + "T = 300. #K\n", + "#As raoults law is applicable, Ki = yi/xi = Pis/P\n", + "#xi = yi*P/Pis\n", + "#ln P = A- B/(T-C)\n", + "#Assuming,\n", + "T1 = 385.94 #K\n", + "\n", + "# Calculation \n", + "Pas1 = math.exp(A1 - B1 / (T1 - C1)) \n", + "Pas2 = math.exp(A2 - B2 / (T1 - C2)) \n", + "Pas3 = math.exp(A3 - B3 / (T1 - C3)) \n", + "\n", + "# Result\n", + "print \"(a)Dew point temperature of the mixture = \",T1,\"K\"\n", + "Ps1 = math.exp(A1 - B1 / (T - C1)) \n", + "Ps2 = math.exp(A2 - B2 / (T - C2)) \n", + "Ps3 = math.exp(A3 - B3 / (T - C3)) \n", + "P1 = 1/(y1/Ps1 + y2/Ps2 + y3/Ps3) \n", + "print \"(b)Dew point pressure = %.2f kPa\"%P1\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Dew point temperature of the mixture = 385.94 K\n", + "(b)Dew point pressure = 23.79 kPa\n" + ] + } + ], + "prompt_number": 21 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 7.11 page no :180" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "#1 - methanol, 2 - ethanol, 3 - propanol\n", + "x1 = 0.45 \n", + "x2 = 0.3 \n", + "x3 = 1 - (x1 + x2) \n", + "P = 101.3 #kPa\n", + "# by drawing the temperature vs vapour pressure graph and interpolation,assuming,\n", + "T = 344.6 #K\n", + "Ps1 = 137.3 \n", + "Ps2 = 76.2 \n", + "Ps3 = 65.4 \n", + "\n", + "# Calculation \n", + "y1 = x1 * Ps1 / P \n", + "y2 = x2 * Ps2 / P \n", + "y3 = x3 * Ps3 / P \n", + "\n", + "# Result\n", + "print \"(a)Bubble point temperature = \",T,\"K\"\n", + "print \"Composition of methanol in vapour = %.f %%\"%(y1*100)\n", + "print \"Composition of ethanol in vapour = %.1f%%\"%(y2*100)\n", + "print \"Composition of propanol in vapour = %.1f%%\"%(y3*100)\n", + "#again, for xi = 1\n", + "T1 = 347.5 #K\n", + "P1 = 153.28 \n", + "P2 = 85.25 \n", + "P3 = 73.31 \n", + "xa = x1 * P / P1 \n", + "xb = x2 * P / P2 \n", + "xc = x3 * P / P3 \n", + "print \"(b)Dew point temperature = \",T1,\"K\"\n", + "print \"Composition of methanol in liquid = %.1f %%\"%(xa*100)\n", + "print \"Composition of ethanol in liquid = %.1f %%\"%(xb*100)\n", + "print \"Composition of propanol in liquid = %.1f %%\"%(xc*100)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Bubble point temperature = 344.6 K\n", + "Composition of methanol in vapour = 61 %\n", + "Composition of ethanol in vapour = 22.6%\n", + "Composition of propanol in vapour = 16.1%\n", + "(b)Dew point temperature = 347.5 K\n", + "Composition of methanol in liquid = 29.7 %\n", + "Composition of ethanol in liquid = 35.6 %\n", + "Composition of propanol in liquid = 34.5 %\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 7.12 pageno : 181" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "xp = 0.25 # propane\n", + "xnb = 0.4 # n-butane\n", + "xnp = 0.35 # n-pentane\n", + "P = 1447.14 #kPa \n", + "#assuming temperatures 355.4 K and 366.5 K , corresponding Ki \n", + "# values are found from nomograph and total Ki value are 0.928 and 1.075 resp, thus bubble point temperature lies between, using interpolation bubble point temperature is found to be,\n", + "Tb = 361. #K\n", + "print \"(a) The buuble point temperature = \",Tb,\"K\"\n", + "\n", + "\n", + "# Calculation \n", + "#At 361,\n", + "Kip = 2.12 \n", + "Kinb = 0.85 \n", + "Kinp = 0.37 \n", + "xp1 = Kip * xp \n", + "xnb1 = Kinb * xnb \n", + "xnp1 = Kinp * xnp \n", + "\n", + "# Result\n", + "print \"concentration of propane at bubble point = \",xp1\n", + "print \"concentration of n-butane at bubble point = \",xnb1\n", + "print \"concentration of n-pentane at bubble point = %.3f\"%xnp1\n", + "#At dew point Yi/Ki = 1, at 377.6K this is 1.1598 and at 388.8K \n", + "# it is 0.9677, by interpolation dew point is found to be\n", + "Td = 387. #K\n", + "Kip1 = 2.85 \n", + "Kinb1 = 1.25 \n", + "Kinp1 = 0.59 \n", + "yp1 = xp/Kip1 \n", + "ynb1 = xnb/Kinb1 \n", + "ynp1 = xnp/Kinp1 \n", + "print \"(b) The dew point temperature = \",Td,\"K\"\n", + "print \"concentration of propane at dew point = %.4f\"%yp1\n", + "print \"concentration of n-butane at dew point = %.4f\"%ynb1\n", + "print \"concentration of n-pentane at dew point = %.4f\"%ynp1\n", + "\n", + "#summation zi / (1 + L/VKi)= 0.45, using trial and error, we find\n", + "T = 374.6 #K\n", + "L = 0.55 \n", + "V = 0.45 \n", + "Kip2 = 2.5 \n", + "Kinb2 = 1.08 \n", + "Kinp2 = 0.48 \n", + "t = (xp/(1+L/(V*Kip2)))+(xnb/(1+L/(V*Kinb2))) + (xnp/(1+L/(V*Kinp2))) \n", + "yp2 = (xp/(1+L/(V*Kip2)))/t \n", + "ynb2 = (xnb/(1+L/(V*Kinb2)))/t \n", + "ynp2 = (xnp/(1+L/(V*Kinp2)))/t \n", + "xp2 = (xp - V * yp2)/L \n", + "xnb2 = (xnb - V * ynb2)/L \n", + "xnp2 = (xnp - V * ynp2)/L \n", + "print \"(c)Temperature of the mixture = \",T,\"K\"\n", + "print \"vapour phase concentration of propane = %.4f\"%yp2\n", + "print \"vapour phase concentration of n-butane = %.4f\"%ynb2\n", + "print \"vapour phase concentration of n-pentane = %.4f\"%ynp2\n", + "print \"liquid phase concentration of propane = %.4f\"%xp2\n", + "print \"liquid phase concentration of n-butane = %.4f\"%xnb2\n", + "print \"liquid phase concentration of n-pentane = %.4f\"%xnp2\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a) The buuble point temperature = 361.0 K\n", + "concentration of propane at bubble point = 0.53\n", + "concentration of n-butane at bubble point = 0.34\n", + "concentration of n-pentane at bubble point = 0.130\n", + "(b) The dew point temperature = 387.0 K\n", + "concentration of propane at dew point = 0.0877\n", + "concentration of n-butane at dew point = 0.3200\n", + "concentration of n-pentane at dew point = 0.5932\n", + "(c)Temperature of the mixture = 374.6 K\n", + "vapour phase concentration of propane = 0.3696\n", + "vapour phase concentration of n-butane = 0.4131\n", + "vapour phase concentration of n-pentane = 0.2173\n", + "liquid phase concentration of propane = 0.1521\n", + "liquid phase concentration of n-butane = 0.3893\n", + "liquid phase concentration of n-pentane = 0.4586\n" + ] + } + ], + "prompt_number": 27 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 7.13 pageno : 185" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "P = 93.30 #kPa pressure\n", + "T1 = 353. #K temperature\n", + "T2 = 373. #K temperature\n", + "Pwater1 = 47.98 #kPa pressure of water\n", + "Pwater2 = 101.3 #kPa\n", + "Pliq1 = 2.67 #kPa pressure of liquid\n", + "Pliq2 = 5.33 #kPa\n", + "\n", + "# Calculation \n", + "T = T1 + (T2 - T1)*(P - (Pwater1 + Pliq1))/(Pwater2 + Pliq2 - (Pwater1 + Pliq1)) \n", + "\n", + "# Result\n", + "print \"(a)The equilibrium temperature = %.1f K\"%T\n", + "Pwater = 88.50 \n", + "y = Pwater * 100 /P \n", + "print \"(b)Water vapour in vapour mixture = %.2f %%\"%y\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)The equilibrium temperature = 368.2 K\n", + "(b)Water vapour in vapour mixture = 94.86 %\n" + ] + } + ], + "prompt_number": 29 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 7.14 pageno : 185" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "%pylab inline\n", + "\n", + "from matplotlib.pyplot import *\n", + "from numpy import *\n", + "\n", + "# variables \n", + "#the three phase temperature is first find out, which comes to be 342K, the\n", + "# corresponding Ps1 = 71.18, Ps2 = 30.12\n", + "T = [342, 343, 348, 353, 363, 373] \n", + "Ps2 = [30.12, 31.06, 37.99, 47.32, 70.11, 101.3] \n", + "Ps1 = [71.18, 72.91, 85.31, 100.5, 135.42, 179.14] \n", + "P = 101.3 #kPa\n", + "\n", + "y1 = zeros(6)\n", + "y2 = zeros(6)\n", + "\n", + "# Calculation \n", + "for i in range(6):\n", + " y1[i] = 1 - (Ps1[i])/P \n", + "\n", + "for i in range(6):\n", + " y2[i] = 1 - (Ps2[i])/P \n", + "\n", + "# Result\n", + "plot(y2,T) \n", + "plot(1-y1,T) \n", + "suptitle(\"temperature composition diagram\")\n", + "xlabel(\"x,y mole fraction of benzene\")\n", + "ylabel(\"Temperature\")\n", + "show()\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Populating the interactive namespace from numpy and matplotlib\n" + ] + }, + { + "output_type": "stream", + "stream": "stderr", + "text": [ + "WARNING: pylab import has clobbered these variables: ['draw_if_interactive']\n", + "`%pylab --no-import-all` prevents importing * from pylab and numpy\n" + ] + }, + { + "metadata": {}, + "output_type": "display_data", + "png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAEhCAYAAABlUDcAAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XlYlPX+//EnA6K4ZblgippHM2WTcUdRwQ0T3BcQl1Kz\nzMzU/B71WInZkeocT6nHyrK0bHGl3BdKcDcV8bjlkkkGhAsqIjDCzHx+f0zMTxJjkeEe4P24Lq+Y\nmXvueQ3czXvu+7M5KKUUQgghxJ/otA4ghBDCPkmBEEIIkScpEEIIIfIkBUIIIUSepEAIIYTIkxQI\nIYQQeZICUQ6kpqby4Ycfah2jQN5//30yMzO1jlHixo8fz9mzZwGYP39+rsc6depU7K8XHx+Pl5cX\nAEePHuWVV14p9tcQpZ+DjIMo++Lj4+nbty8nT57UOgo5h5uDg0Oejzdu3JijR49Ss2bNAu/TbDaj\n05Wd7zrVqlUjLS3Npq9hq2OirP0tyjv5S5YDM2fO5OLFi+j1embMmAHAm2++ibe3Ny1atGDWrFmA\n5UOjefPmjBs3jubNmzNixAiioqLo0qULjRs35sCBAwCEh4czatQoOnfuTJMmTViyZIn1tR6036ee\neopnn30WHx8fEhISmDBhAm3btqVZs2bMnDkTgEWLFpGUlERAQADdu3cHoGrVqtZ9r1u3jjFjxgDw\n7LPPMmHCBDp16sTMmTM5d+4cAQEBtGzZkvbt23P69On7fg9paWmEhobi4eFBy5YtWb9+PQDLly/H\n3d0dd3d3pkyZYt2+atWqzJgxA29vb3r27MmPP/5It27daNiwIZGRkQCsWLGC/v3706NHD5o2bcrs\n2bOtz//nP/9JixYtaNGiBe+88w4At2/fpk+fPrRs2RIvLy/WrFkDgL+/P7GxscycOZPMzEz0ej2j\nRo3K9Tswm828/PLL1qxffPEFADExMfj7+xMaGkqzZs0YOnQoeX3vO3jwIC1atKBt27Z88MEH1vtj\nYmLo27cvAIcPH8bX15eWLVvSunVrzpw5A0B6ejp9+/bFw8ODoUOH0qFDB44dO2bNN336dNq0acOh\nQ4eYO3cu7dq1o3nz5jz77LOYzWbre5w2bRodOnSgRYsWHDlyhMGDB9OkSRPrcSnsjBJlXnx8vPL0\n9LTe3rBhg3r++eeVUkqZTCYVHBysoqKi1KVLl5STk5P66aeflNlsVq1bt1bPPfec9TlBQUFKKaXm\nzJmjfHx8VHZ2trp586aqX7++unz58l/uV6fTqaNHj1ozpKamKqWUMhqNyt/fX8XGxiqllHriiSdU\nSkqKdbuqVataf163bp169tlnlVJKPfPMM2rAgAHWxzp27KguXLiglFLq0KFDqlOnTvf9HiZPnqym\nT5+eK8Ovv/6q6tevr27evKlMJpPq0aOHWrVqlVJKKQcHB7Vz506llFIDBw5UvXr1UmazWf3vf/9T\nHh4eSimlli9frh5//HGVmpqq7t69q7y8vNSBAwfU/v37lZeXl7p7967KzMxUHh4e6tChQ2rNmjXq\nxRdftGZIS0tTSqlcv4N73/O9t7/66isVGBiolFIqJSVF1atXTyUkJKjo6Gj1yCOPqOTkZGU2m5Wv\nr6+Kjo6+7/03a9ZMHThwQCml1KxZs6zHRHR0tAoODrbmMZvNSimloqKirPe/9dZb6qWXXlJKKfXT\nTz8pJycna14HBwcVGRmZ6/eaY9SoUWrdunXW9/iPf/xDKaXUwoUL1eOPP66uXbum7t69q+rVq6eu\nXr16X2ahLSetC5SwPfWnb5M7d+5k586d6PV6wPLtMD4+nqZNm9K4cWOaN28OgIeHB926dQPA09OT\n3377DbBcHurfvz9OTk7UqFGD7t27c+jQIXbv3v3A/TZq1IjWrVtbM3z66aesWLECBwcHkpKSOHv2\nLK1atSrwe3JwcGDQoEEAXL9+nWPHjjF06FDr43m1Y/zwww9s2LDBert69eps376dHj16UKNGDQCG\nDx/O3r17CQkJwdnZmZ49ewLg5eVFpUqVcHBwyPW7AOjVqxfVq1cHYODAgezbtw+AQYMG4ezsbP15\n79699O/fn5kzZzJz5kz69OlDly5dCvye9+3bR2hoKACPPfYY3bt35+DBg9SuXZt27drh6uoKgI+P\nT658AFevXsVgMODr62t9n5s2bbrvNa5du0ZISAi//vorOp0Og8EAwIEDB/j73/8OQPPmzfH29rY+\nx9HRkQEDBlhvb968mQULFmA0GklJSbEeTwDBwcGA5Xjy9PSkVq1aADRt2pTExERq165d4N+HsD0p\nEOXU66+/ztixY3PdFx8fT8WKFa23dTqd9QNOp9NZLxXkJadN4UH7rVKlivX2uXPnWLJkCcePH6dq\n1aqMGTMGo9GY537vLW5//tCvXLmydZvatWsTFxf3wHx57S8n9733KaWs76VChQrW+wv6u8h5vlIq\n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\n", + "text": [ + "<matplotlib.figure.Figure at 0x27c4950>" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 7.15 pageno : 188" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import math \n", + "\n", + "# Variables \n", + "T = 379.2 #K solution\n", + "P = 101.3 #kPa \n", + "Ps = 70. #kPa solution\n", + "Molality = 5\n", + "\n", + "# Calculation \n", + "Pws = math.exp(16.26205 - 3799.887/(T - 46.854)) \n", + "k = P / Pws \n", + "Pws1 = Ps / k \n", + "T1 = 3799.887 / (16.26205 - math.log( Pws1)) + 46.854 \n", + "\n", + "# Result \n", + "print \"Boiling point of the solution = %.1f K\"%T1\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Boiling point of the solution = 368.8 K\n" + ] + } + ], + "prompt_number": 33 + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/Stoichiometry_And_Process_Calculations/ch8.ipynb b/Stoichiometry_And_Process_Calculations/ch8.ipynb new file mode 100755 index 00000000..f4b3762e --- /dev/null +++ b/Stoichiometry_And_Process_Calculations/ch8.ipynb @@ -0,0 +1,927 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "Chapter 8 : Humidity and Humidity chart" + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 8.1 pageno : 206" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "T = 280. #K\n", + "P = 105. #kPa\n", + "Pas = 13.25 #kPa ( Vpaour pressure of acetone )\n", + "Pa = Pas # ( As gas is saturated, partial pressure = vapour pressure )\n", + "\n", + "# Calculation \n", + "Mfr = Pa / P #(Mole fraction) \n", + "Mpr = Mfr * 100 \n", + "print \"(a)The mole percent of acetone in the mixture = %.2f %%\"%Mpr\n", + "Ma = 58.048 #(molecular weight of acetone)\n", + "Mn = 28. #(molecular weight of nitrogen)\n", + "N = 1. #mole\n", + "Na = Mfr * N \n", + "Nn = N - Na \n", + "ma = Na * Ma \n", + "mn = Nn * Mn \n", + "mtotal = ma + mn \n", + "maper = ma *100 / mtotal \n", + "mnper = mn *100/ mtotal \n", + "\n", + "# Result\n", + "print \"(b)Weight percent of acetone = %.2f %%\"%maper\n", + "print \"Weight percent of nitrogen = %.2f %%\"%mnper\n", + "Vstp = 22.4 #m**3/kmol\n", + "Pstp = 101.3 #kPa\n", + "Tstp = 273.15 #K\n", + "V = Vstp * Pstp * T / ( Tstp * P ) \n", + "C = ma/V \n", + "print \"(c)Concentration of vapour = %.4f kg/m**3\"%C\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)The mole percent of acetone in the mixture = 12.62 %\n", + "(b)Weight percent of acetone = 23.04 %\n", + "Weight percent of nitrogen = 76.96 %\n", + "(c)Concentration of vapour = 0.3307 kg/m**3\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 8.2 pageno : 207" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import math \n", + "\n", + "# Variables \n", + "P = 101.3 #kPa\n", + "Per1 = 10. #%\n", + "\n", + "# Calculation \n", + "Pa = P * Per1 / 100 # ( a - benzene )\n", + "Ps = Pa #( saturation )\n", + "#lnPs = 13.8858 - 2788.51/(T - 52.36)\n", + "T = 2788.51 / ( 13.8858 - math.log(Ps)) + 52.36 \n", + "\n", + "# Result\n", + "print \"Temperature at which saturation occurs = %.1f K\"%T\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Temperature at which saturation occurs = 293.4 K\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 8.3 pageno : 207" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "Pdryair = 101.3 #kPa\n", + "Pacetone = 16.82 #kPa\n", + "\n", + "# Calculation \n", + "Nratio = Pacetone / (Pdryair - Pacetone) \n", + "mratio = Nratio * 58.048 / 29 # ( Macetone = 58.048, Mair = 29 )\n", + "macetone = 5. #kg ( given )\n", + "mdryair = macetone / mratio \n", + "\n", + "# Result\n", + "print \"Minimum air required = %.2f kg\"%mdryair\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Minimum air required = 12.55 kg\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 8.4 pageno : 209" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import math \n", + "\n", + "# Variables \n", + "Pa = 15. #kPa ( partial pressure of acetone)\n", + "Ptotal = 101.3 #kPa\n", + "\n", + "# Calculation and Result \n", + "Mfr = Pa / Ptotal \n", + "print \"(a)Mole fraction of acetone = %.4f \"%Mfr\n", + "Macetone = 58.048 \n", + "Mnitrogen = 28. \n", + "mafr = Mfr * Macetone / ( Mfr * Macetone + (1-Mfr)* Mnitrogen ) \n", + "print \"(b)Weight fraction of acetone = %.4f\"%mafr\n", + "Y = Mfr / ( 1 - Mfr ) \n", + "print \"(c)Molal humidity = %.4f\"%Y,\"moles of acetone/moles of nitrogen\"\n", + "Y1 = Y * Macetone / Mnitrogen \n", + "print \"(d)Absolute humidity = %.4f\"%Y1,\"kg acetone/kg nitrogen\"\n", + "Pas = 26.36 #kPa ( vapour pressure)\n", + "Ys = Pas / ( Ptotal - Pas) #saturation humidity\n", + "print \"(e)Saturation humidity = %.4f\"%Ys,\"moles of acetone/moles of nitrogen\"\n", + "Y1s = Ys * Macetone / Mnitrogen \n", + "print \"(f)Absolute saturation humidity = %.4f\"%Y1s,\"kg acetone/kg nitrogen\"\n", + "V = 100. #m**3\n", + "Vstp =22.4143 #m**3/kmol\n", + "Pstp = 101.3 #kPa\n", + "Tstp = 273.15 #K\n", + "T = 295. #K\n", + "N = V * Ptotal * Tstp / (Vstp * Pstp * T ) \n", + "Nacetone = N * Mfr \n", + "macetone = Nacetone * Macetone \n", + "print \"(g)Mass of acetone in 100m**3 of the total gas = %.1f\"%macetone,\"kg\"" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Mole fraction of acetone = 0.1481 \n", + "(b)Weight fraction of acetone = 0.2649\n", + "(c)Molal humidity = 0.1738 moles of acetone/moles of nitrogen\n", + "(d)Absolute humidity = 0.3603 kg acetone/kg nitrogen\n", + "(e)Saturation humidity = 0.3517 moles of acetone/moles of nitrogen\n", + "(f)Absolute saturation humidity = 0.7292 kg acetone/kg nitrogen\n", + "(g)Mass of acetone in 100m**3 of the total gas = 35.5 kg\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 8.5 pageno : 211" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "Pa = 15. #kPa ( Partial pressure )\n", + "Pas = 26.36 #kPa ( Vapour pressure )\n", + "\n", + "# Calculation \n", + "RS = Pa * 100 / Pas \n", + "Y = 0.1738 \n", + "Ys = 0.3517 \n", + "PS = Y * 100 / Ys \n", + "\n", + "# Result\n", + "print \"Relative humidity = %.1f\"%RS,\"%\"\n", + "print \"Percent humidity = %.2f\"%PS,\"%\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Relative humidity = 56.9 %\n", + "Percent humidity = 49.42 %\n" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 8.6 page no : 211" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import math \n", + "\n", + "# Variables \n", + "mwater = 0.0109 #kg\n", + "V = 1. #m**3\n", + "T = 300. #K\n", + "P = 101.3 #kPa\n", + "Vstp =22.4143 #m**3/kmol\n", + "Pstp = 101.3 #kPa\n", + "Tstp = 273.15 #K\n", + "\n", + "# Calculation \n", + "N = V * P * Tstp / (Vstp * Pstp * T ) \n", + "Nwater = mwater / 18.016 \n", + "Nfr = Nwater / N \n", + "Pwater = Nfr * P \n", + "\n", + "# Result\n", + "print \"(a)Partial pressure of water vapour = %.2f\"%Pwater,\"kPa\"\n", + "Ps = math.exp(16.26205 - 3799.887/(T - 46.854)) \n", + "RS = Pwater * 100 / Ps \n", + "print \"(b)Relative saturation = %.2f\"%RS,\"%\"\n", + "Y1 = Pwater *18 / ((P - Pwater)*29) \n", + "print \"(c)Absolute humidity = %.2e\"%Y1,\"kg water / kg dry air\"\n", + "Y1s = Ps *18 / ((P - Ps)*29) \n", + "PS1 = Y1 * 100 / Y1s \n", + "print \"(d)Percent saturation = %.2f\"%PS1,\"%\"\n", + "PS = 10. #%\n", + "Y1S = Y1 * 100/PS \n", + "#Y1S = Pas/(P - Pas ) * 18 /29\n", + "Pas1 = 29 * P * Y1S / (18 + 29*Y1s) \n", + "T1 = 3799.887 / (16.26205-math.log(Pas1)) + 46.854 \n", + "print \"(e)Temperature at which 10%% saturation occurs = %.1f\"%T1,\"K\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Partial pressure of water vapour = 1.51 kPa\n", + "(b)Relative saturation = 43.17 %\n", + "(c)Absolute humidity = 9.38e-03 kg water / kg dry air\n", + "(d)Percent saturation = 42.31 %\n", + "(e)Temperature at which 10% saturation occurs = 326.9 K\n" + ] + } + ], + "prompt_number": 11 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 8.7 page no : 213" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "T = 300. #K\n", + "P = 100. #kPa\n", + "S = 25000. #kJ/m**3\n", + "T1= 295. #K\n", + "P1 = 105. #kPa\n", + "RS = 50. #%\n", + "Ps = 3.5 #kPa\n", + "Ps1 = 2.6 #kPa\n", + "Vstp = 22.4143 #m**3/kmol\n", + "Pstp = 101.3 #kPa\n", + "Tstp = 273.15 #K\n", + "V = 1. #m**3\n", + "\n", + "# Calculation \n", + "N = V * P * Tstp/(Vstp * Pstp * T) \n", + "Nfuel = N * (P - Ps)/P \n", + "Smol = S / Nfuel #kJ/kmol\n", + "N1 = V * P1 * Tstp/(Vstp * Pstp * T1) \n", + "Pwater = Ps1 * RS /100 \n", + "Nfuel1 = N1 * (P1 - Pwater )/P1 \n", + "S1 = Smol * Nfuel1 \n", + "\n", + "# Result\n", + "print \"Heating value of gas at 295K and 105kPa = %.f\"%S1,\"kJ/m**3\"\n", + "\n", + "# note : answer may vary because of rounding error.\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Heating value of gas at 295K and 105kPa = 27321 kJ/m**3\n" + ] + } + ], + "prompt_number": 13 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 8.8 pageno : 215" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import math \n", + "# Variables \n", + "T = 300. #K\n", + "T1 = 335. #K\n", + "P = 150. #kPa\n", + "\n", + "# Calculation \n", + "#lnPs = 13.8858 - 2788.51 / ( T - 52.36)\n", + "Ps = math.exp(13.8858 - 2788.51 / ( T - 52.36)) \n", + "Ps1 = math.exp(13.8858 - 2788.51 / ( T1 - 52.36)) \n", + "Pa = Ps #(Vapour pressure at dew point is equal to the partial pressure of the vapour)\n", + "Y = Pa / (P - Pa) \n", + "Ys = Ps1 / (P - Ps1) \n", + "PS = Y * 100 / Ys \n", + "\n", + "# Result \n", + "print \"(a)Percent saturation = %.2f\"%PS,\"%\"\n", + "Ma = 78.048 \n", + "Mb = 28 \n", + "Q = Y * Ma / Mb \n", + "print \"(b)Quantity of benzene per kilgram of nitrogen = %.4f\"%Q,\"kg benzene/kg nitrogen\"\n", + "V = 1. #m**3 ( basis )\n", + "Vstp = 22.4143 #m**3/kmol\n", + "Pstp = 101.3 #kPa\n", + "Tstp = 273.15 #K\n", + "N = V * P * Tstp/(Vstp * Pstp * T1) \n", + "y = Y / ( 1 + Y ) \n", + "Nbenzene = N * y \n", + "C = Nbenzene * Ma \n", + "print \"(c)Kilogram of benzene per m**3 of nitrogen = %.4f\"%C,\"kg/m**3\"\n", + "P1 = 100. #kPa\n", + "Pbenzene = y * P1 \n", + "T1 = 2788.51 / ( 13.8858 - math.log (Pbenzene)) + 52.36 \n", + "print \"(d)Dew point = %.2f\"%T1,\"K\"\n", + "Per1 = 60 #%\n", + "Y2 = Y * (1- Per1/100.) \n", + "#Y2 = Pa / (P - Pa)\n", + "P = Pa / Y2 + Pa \n", + "print \"(e)Pressure required = %.1f\"%P,\"kPa\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Percent saturation = 17.17 %\n", + "(b)Quantity of benzene per kilgram of nitrogen = 0.2827 kg benzene/kg nitrogen\n", + "(c)Kilogram of benzene per m**3 of nitrogen = 0.3871 kg/m**3\n", + "(d)Dew point = 291.39 K\n", + "(e)Pressure required = 354.3 kPa\n" + ] + } + ], + "prompt_number": 16 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 8.9 pageno : 216" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "T = 300. #K\n", + "T1 = 285. #K\n", + "Pwater = 3.56 #kPa\n", + "Pwater1 = 1.4 #kPa\n", + "V = 1. #m**3 ( Basis )\n", + "Vstp = 22.4143 #m**3/kmol\n", + "\n", + "# Calculation \n", + "N = V / Vstp \n", + "Pstp = 101.3 #kPa\n", + "Y = Pwater / (Pstp - Pwater) \n", + "Y1 = Pwater1 / (Pstp - Pwater1) \n", + "Nremoved = Y - Y1 \n", + "Ndryair = N * 1 / (1 + Y) \n", + "mremoved = Ndryair * Nremoved * 18.016 \n", + "\n", + "# Result\n", + "print \"(a)amount of water removed = %.4f\"%mremoved,\"kg\"\n", + "Nremaining = Ndryair * Y1 \n", + "V1 = (Ndryair + Nremaining) * Vstp \n", + "print \"(b)Volume of gas at stp after drying = %.4f\"%V1,\"m**3\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)amount of water removed = 0.0174 kg\n", + "(b)Volume of gas at stp after drying = 0.9784 m**3\n" + ] + } + ], + "prompt_number": 18 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 8.11 page no : 220" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "Td = 328. #K ( dry bulb )\n", + "P = 101.3 #kPa\n", + "PS = 10. #%\n", + "#refering to the psychometric chart, corresponding to 328 K and 10% saturation\n", + "Y1 = 0.012 #kg water / kg dry air\n", + "print \"(a)Absolute humidity = \",Y1,\"kg water / kg dry air\"\n", + "#Y1 = Pa * 18 / ( P - Pa ) * 29\n", + "\n", + "# Calculation \n", + "Pa = Y1 * P * 29 /( 18 + Y1 * 29 ) \n", + "\n", + "# Result\n", + "print \"(b)Partial Pressure of water vapour = %.3f\"%Pa,\"kPa\"\n", + "#using psychometric chart, saturation humidity at 328 K is given as\n", + "Y1s = 0.115 #kg water / kg dry air\n", + "print \"(c)The absolute humidity at 328K = \",Y1s,\"kg water / kg dry air\"\n", + "#at saturation partial pressure = vapour pressure\n", + "Pas = Y1s * P * 29 /( 18 + Y1s * 29 ) \n", + "print \"(d)Vapour Pressure of water vapour = %.1f\"%Pas,\"kPa\"\n", + "RS = Pa * 100 / Pas \n", + "print \"(e)Percent relative saturation = %.2f\"%RS,\"%\"\n", + "#using psychometric chart, moving horizontally keeping humidity constant to 100% saturation, we get dew point as,\n", + "T = 290. #K\n", + "print \"(f)Dew point = \",T,\"K\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Absolute humidity = 0.012 kg water / kg dry air\n", + "(b)Partial Pressure of water vapour = 1.921 kPa\n", + "(c)The absolute humidity at 328K = 0.115 kg water / kg dry air\n", + "(d)Vapour Pressure of water vapour = 15.8 kPa\n", + "(e)Percent relative saturation = 12.13 %\n", + "(f)Dew point = 290.0 K\n" + ] + } + ], + "prompt_number": 20 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 8.12 pageno : 222" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "Ca = 1.884 #kJ/kgK\n", + "Cb = 1.005 #kJ/kgK\n", + "Y1 = 0.012 \n", + "\n", + "# Calculation \n", + "#Cs = Cb + Y1 * Ca\n", + "Cs = Cb + Y1 * Ca \n", + "\n", + "# Result\n", + "print \"Humid heat of the sample = %.4f\"%Cs,\"kJ/kgK\"\n", + "P = 101.3 #kPa\n", + "V = 100. #m**3\n", + "R = 8.314 \n", + "T = 328. #K\n", + "T1 = 373. #K\n", + "N = P * V / ( R * T ) \n", + "Pa = 1.921 #kPa\n", + "Ndryair = N * (P - Pa)/P \n", + "mdryair = Ndryair * 29 \n", + "Ht = mdryair * Cs * (T1 - T) \n", + "print \"Heat to be supplied = %.f\"%Ht,\"kJ\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Humid heat of the sample = 1.0276 kJ/kgK\n", + "Heat to be supplied = 4887 kJ\n" + ] + } + ], + "prompt_number": 22 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 8.14 pageno : 224" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "P = 101.3 #kPa\n", + "MW = 58. \n", + "T1 = 280.8 #K\n", + "Ps = 5. #kPa\n", + "pr = 2. #kJ/kgK ( Psychometric ratio )\n", + "Hvap = 360. #kJ/kg\n", + "Tw = T1 \n", + "\n", + "# Calculation \n", + "Yw1 = Ps * MW / (( P - Ps) * 29) \n", + "# Tw = Tg - Hvap * ( Yw1 - Y1) / (hG / kY), where hG/kY is the psychmetric ratio pr\n", + "Y1 = 0 \n", + "Tg = Tw + Hvap * ( Yw1 - Y1) / pr \n", + "\n", + "# Result\n", + "print \"The air temperature = %.2f\"%Tg,\"K\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The air temperature = 299.49 K\n" + ] + } + ], + "prompt_number": 23 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 8.15 pageno : 225" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "Td = 353.2 #K\n", + "Tw = 308. #K\n", + "Hvap = 2418.5 #kJ/kg\n", + "pr = 0.950 #kJ/kg\n", + "Ps = 5.62 #kPa\n", + "P = 101.3 #kPa\n", + "\n", + "# Calculation \n", + "Yw1 = (Ps * 18)/ (( P - Ps) * 29) \n", + "Y1 = Yw1 - pr * ( Td - Tw ) / Hvap \n", + "\n", + "# Result\n", + "print \"Humidity = %.4f\"%Y1,\"kg water/kg dry air\"\n", + "#humidity can also be directly obtained from psychometric chart, which we get to be 0.018 kg water/kg dry air\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Humidity = 0.0187 kg water/kg dry air\n" + ] + } + ], + "prompt_number": 24 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 8.16 page no : 227" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "%pylab inline\n", + "\n", + "import math\n", + "from matplotlib.pyplot import *\n", + "\n", + "# Variables\n", + "TK = [283,293,303,313]\n", + "PaS = []\n", + "Ys = []\n", + "\n", + "# Calculations - part A\n", + "for i in range(len(TK)):\n", + " Ps = 13.8858 - (2788.51 / (TK[i] - 52.36))\n", + " PaS.append(round(math.e**Ps,2))\n", + " Ys.append(PaS[i]/(101.3 - PaS[i]) * 78.048/29)\n", + " \n", + "# Results\n", + "plot(TK,Ys)\n", + "plot(TK,Ys,\"go\")\n", + "xlabel(\"Temperature, K\")\n", + "ylabel(\"Y', kg benzene/ kg dry air\")\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Populating the interactive namespace from numpy and matplotlib\n" + ] + }, + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 1, + "text": [ + "<matplotlib.text.Text at 0x3797790>" + ] + }, + { + "metadata": {}, + "output_type": "display_data", + "png": "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\n", + "text": [ + "<matplotlib.figure.Figure at 0x2c0e610>" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 8.17 pageno : 228" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "Tin = 380.7 #K\n", + "Pin = 101.3 #kPa\n", + "Tdew = 298. #K\n", + "mremoved = 2.25 #kg\n", + "V = 100. #m**3\n", + "#using humidity chart, humidity of air at dry bulb temperature of 380.7K and dew point = 298K is,\n", + "Y = 0.02 # kg water /kg dry air\n", + "print \"(a)Humidity of air entering the drier = \",Y,\"kg water /kg dry air\"\n", + "Tstp = 273.15 #K\n", + "Vstp = 22.4143 #m**3/kmol\n", + "\n", + "# Calculation \n", + "N = V * Tstp / ( Vstp * Tin ) \n", + "MY = Y * 29 / 18. #molal humidity\n", + "Ndryair = N / ( 1 + MY ) \n", + "mdryair = Ndryair *29 \n", + "mwaterin = mdryair * Y \n", + "mwaterout = mwaterin + mremoved \n", + "Yout = mwaterout / mdryair \n", + "# percent humidity is calculated using the chart, and is\n", + "PY = 55. #%\n", + "\n", + "# Result\n", + "print \"(b)exit air humidity = %.3f\"%Yout,\"kg water /kg dry air\"\n", + "print \"Percent humidity = \",PY,\"%\"\n", + "#from the humidity chart \n", + "Twet = 313.2 #K\n", + "Td = 322.2 #K\n", + "print \"(c)exit air wet bulb temperature = \",Twet,\"K\"\n", + "print \"(c)exit air dry bulb temperature = \",Td,\"K\"\n", + "MYout = Yout * 29 / 18 \n", + "Nout = Ndryair * ( 1 + MYout ) / 1 \n", + "V1 = Nout * Vstp * Td / Tstp \n", + "print \"(d)Volume of exit air = %.2f\"%V1,\"m**3\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Humidity of air entering the drier = 0.02 kg water /kg dry air\n", + "(b)exit air humidity = 0.045 kg water /kg dry air\n", + "Percent humidity = 55.0 %\n", + "(c)exit air wet bulb temperature = 313.2 K\n", + "(c)exit air dry bulb temperature = 322.2 K\n", + "(d)Volume of exit air = 87.94 m**3\n" + ] + } + ], + "prompt_number": 25 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 8.18 pageno : 231" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "P = 101.3 #kPa\n", + "Td = 303. #K\n", + "Tw = 288. #K\n", + "#using psychometric chart,\n", + "Y1 = 0.0045 #kg water/ kg dry air\n", + "PY = 18. #%\n", + "Theated = 356.7 #K\n", + "Cb = 1.005 \n", + "Ca = 1.884 \n", + "\n", + "# Calculation \n", + "Cs = Cb + Y1 * Ca \n", + "Q = 1 * Cs * (Theated - Td) \n", + "\n", + "# Result\n", + "print \"(a)Humidity of the initial air = %.4f\"%Y1,\"kg water/ kg dry air\"\n", + "print \"(b)Percent humidity = \",PY,\"%\"\n", + "print \"(c)Temperature to which the air is heated = \",Theated,\"K\"\n", + "print \"(d)Heat to be suppplied = %.2f\"%Q,\"kJ\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Humidity of the initial air = 0.0045 kg water/ kg dry air\n", + "(b)Percent humidity = 18.0 %\n", + "(c)Temperature to which the air is heated = 356.7 K\n", + "(d)Heat to be suppplied = 54.42 kJ\n" + ] + } + ], + "prompt_number": 27 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 8.19 pageno : 232" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "Tw = 313. #K\n", + "Td = 333. #K\n", + "#Using th psychometric chart,\n", + "Y = 0.04 #kg water/ kg dry air\n", + "PS = 26.5 #%\n", + "VS = 1.18 #m**3/kg dry air ( volume of saturated air )\n", + "VD = 0.94 #m**3/kg dry air ( volume of dry air )\n", + "\n", + "# Calculation \n", + "VH = VD + PS * (VS - VD )/100 \n", + "HS = 470. #J / kg dry air ( enthalpy of saturated air )\n", + "HD = 60. #J / kg dry air ( enthalpy of dry air )\n", + "H = HD + PS * ( HS - HD )/100 \n", + "Cs = 1.005 + (Y * 1.884)\n", + "H = Cs*(333 - 273.15) + Y*2502.3\n", + "# Result\n", + "print \"(a)Absolute Humidity of the air = \",Y,\"kg water/ kg dry air\"\n", + "print \"(b)Percent humidity = \",PS,\"%\"\n", + "print \"(c)Humid volume = \",VH,\"m**3/kg dry air\"\n", + "print \"(d)Enthalpy of wet air = \",H,\"kJ/kg dry air\"\n", + "print \"Enthalpy of humid air : %.2f kJ/kg dry air\"%H" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Absolute Humidity of the air = 0.04 kg water/ kg dry air\n", + "(b)Percent humidity = 26.5 %\n", + "(c)Humid volume = 1.0036 m**3/kg dry air\n", + "(d)Enthalpy of wet air = 164.751546 kJ/kg dry air\n", + "Enthalpy of humid air : 164.75 kJ/kg dry air\n" + ] + } + ], + "prompt_number": 3 + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/Stoichiometry_And_Process_Calculations/ch9.ipynb b/Stoichiometry_And_Process_Calculations/ch9.ipynb new file mode 100755 index 00000000..a41ec201 --- /dev/null +++ b/Stoichiometry_And_Process_Calculations/ch9.ipynb @@ -0,0 +1,1190 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "Chapter 9 : Material Balance in Unit Operations" + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 9.1 pageno : 251" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "PC1 = 85. #% ( Percent carbon in coal )\n", + "PA1 = 15. #% ( Percent ash in coal )\n", + "PA2 = 80. #% ( Percent ash in cinder )\n", + "PC2 = 20. #% ( Percent carbon in cinder )\n", + "m = 100. #kg (weight of coal )\n", + "\n", + "# Calculation \n", + "mash = PA1 * m / 100 \n", + "w = mash * 100 / PA2 # weight of cinder\n", + "mcarbon = w - mash \n", + "Plost = mcarbon * 100 / ( m - mash ) \n", + "\n", + "# Result\n", + "print \"weight of cinder formed = \",w,\"kg\"\n", + "print \"Percent fuel lost = %.2f\"%Plost,\"%\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "weight of cinder formed = 18.75 kg\n", + "Percent fuel lost = 4.41 %\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 9.2 pageno : 253" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "m = 1. #kg ( mass of completely dry wood )\n", + "P1 = 40. #% ( percentage moisture in wet wood )\n", + "P2 = 5. #% ( Percentage moisture in dry wood )\n", + "\n", + "# Calculation \n", + "mwaterin = P1 * m / ( 100 - P1 ) \n", + "mwaterout = P2 * m / ( 100 - P2 ) \n", + "mevaporated = mwaterin - mwaterout \n", + "\n", + "# Result\n", + "print \"mass of water evaporated per kg of dry wood = %.3f\"%mevaporated,\"kg\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "mass of water evaporated per kg of dry wood = 0.614 kg\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 9.3 pageno : 254" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "F1 = 6*1000. #L/s\n", + "BOD1 = 3 * 10.**-5 #g/L\n", + "BOD2 = 5 * 10.**-3 #g/L\n", + "\n", + "# Calculation \n", + "V = 16 * 10.**3 #m**3/day\n", + "v = V * 10**3 / (24 * 3600.) #L/s\n", + "#Let BOD of the effluent be BODeff,\n", + "BODeff = (BOD2 * (F1 + v) - BOD1 * F1) / ( v ) \n", + "\n", + "# Result\n", + "print \"BOD of the effluent of the plant = %.4f\"%BODeff,\"g/L\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "BOD of the effluent of the plant = 0.1660 g/L\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 9.4 pageno : 256" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "D = 100. #kg of overhead product\n", + "xfa = 0.956 \n", + "xdw = 0.074 \n", + "xdb = 0.741 \n", + "xda = 0.185 \n", + "\n", + "# Calculation \n", + "#water balance gives\n", + "F = D * xdw / (1 - xfa) \n", + "W = F * xfa - xda * D \n", + "W1 = 100 \n", + "B = xdb*D \n", + "Bused = B * W1 / W \n", + "\n", + "# Result\n", + "print \"Quantity of benzene required = %.2f\"%Bused,\"kg\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Quantity of benzene required = 52.08 kg\n" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 9.5 pageno : 258" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "#let, W - waste acid, S - Sulfuric acid, N - nitric acid, M - mixed acid\n", + "xsh2so4 = 0.95 \n", + "xsh2o = 0.5 \n", + "xwh2so4 = 0.3 \n", + "xwhno3 = 0.36 \n", + "xwh2o = 0.34 \n", + "xmh2so4 = 0.4 \n", + "xmhno3 = 0.45 \n", + "xmh2o = 0.15 \n", + "xnhno3 = 0.8 \n", + "xnh2o = 0.2 \n", + "M = 1000. #kg\n", + "\n", + "# Calculation \n", + "# total material balance, W + S + N = 1000 \n", + "#H2SO4 balance, xwh2so4 * W + xsh2so4 * S = xmh2so4*M\n", + "#HNO3 balance, xwhno3 * W + xnhno3 * N = xmhno3*M\n", + "#H2O balance, xwh2o*W+xnh2o*N + xsh2o*S = xmh2o*M\n", + "#solving the above equations simultaneously, we get,\n", + "W = 70.22 #kg\n", + "S = 398.88 #kg\n", + "N = 530.9 #kg\n", + "\n", + "# Result\n", + "print \"Waste acid = \",W,\"kg\"\n", + "print \"Concentrated H2SO4 = \",S,\"kg\"\n", + "print \"Concentrated HNO3 = \",N,\"kg\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Waste acid = 70.22 kg\n", + "Concentrated H2SO4 = 398.88 kg\n", + "Concentrated HNO3 = 530.9 kg\n" + ] + } + ], + "prompt_number": 9 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 9.6 pageno : 261" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "F = 1000. #kg\n", + "Psolute1 = 20. #%\n", + "Psolute2 = 80. #%\n", + "\n", + "\n", + "# Calculation \n", + "#taking solute balance\n", + "L3 = F * Psolute1 / Psolute2 \n", + "#taking total material balance\n", + "V = (F -L3) / 3 \n", + "#for first effect, total balance gives,\n", + "L1 = F - V \n", + "#solute balance gives,\n", + "Psolute3 = F * Psolute1 / L1 \n", + "#For second effect, total balance gives,\n", + "L2 = L1 - V \n", + "#solute balnce gives,\n", + "Psolute4 = L1 * Psolute3 / L2 \n", + "\n", + "# Result\n", + "print \"solute entering second effect = %.2f\"%Psolute3,\"%\"\n", + "print \"Weight entering second effect\",L1,\"kg\"\n", + "print \"solute entering third effect = \",Psolute4,\"%\"\n", + "print \"Weight entering third effect\",L2,\"kg\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "solute entering second effect = 26.67 %\n", + "Weight entering second effect 750.0 kg\n", + "solute entering third effect = 40.0 %\n", + "Weight entering third effect 500.0 kg\n" + ] + } + ], + "prompt_number": 11 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 9.7 pageno : 265" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "F = 100. #kg\n", + "xf = 0.25 \n", + "x2 = 7/107. \n", + "P1 = 10 #%\n", + "\n", + "# Calculation \n", + "W3 = P1 * F * (1-xf)/100. #(W3 - weight of water evaporated)\n", + "\n", + "# let W1 and W2 be weight of crystal and weight of mother liquor remaining after crystallization resp_,\n", + "#F = W1 + W2 + W3\n", + "#100 = W1 + W2 + 7.5\n", + "#solute balance gives, F*xf = W1*x1 + W2*x2\n", + "#100*0.25 = W1*1+W2 * 0.0654\n", + "W2 = (F - W3 - F*xf)/(1-x2) \n", + "W1 = F - W3 - W2 \n", + "\n", + "# Result\n", + "print \"yeild of the crystals = %.2f\"%W1,\"kg\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "yeild of the crystals = 20.28 kg\n" + ] + } + ], + "prompt_number": 12 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 9.8 pageno : 266" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "F = 100. #kg\n", + "xf = 0.15 \n", + "P1 = 80. #% ( Carbonate recovered )\n", + "M1 = 106. #(Molecular weight of Na2CO3)\n", + "M2 = 286. #(Molecular weight of Na2CO3.10H2O)\n", + "\n", + "# Calculation \n", + "x1 = M1 / M2 #(Weight fraction of Na2CO3 in crystals)\n", + "Mrecovered = P1 * F * xf / 100 \n", + "Wcrystal = Mrecovered / x1 \n", + "\n", + "# Result\n", + "print \"(a)quantity of crystals formed = %.2f\"%Wcrystal,\"kg\"\n", + "#Na2CO3 balance gives, F*xf = Wcrystal*x1 + W2*x2\n", + "#W2 weight of mother liquor remaining after crystallization\n", + "#let M = W2 * x2,therefore\n", + "M = F * xf - Mrecovered \n", + "x2 = 0.09 \n", + "W2 = M/x2 \n", + "W3 = F - Wcrystal - W2 #weight of water evaporated\n", + "print \"(b)Weight of water evaporated = %.2f\"%W3,\"kg\"\n", + "\n", + "# note : answer may vary because of rounding error" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)quantity of crystals formed = 32.38 kg\n", + "(b)Weight of water evaporated = 34.29 kg\n" + ] + } + ], + "prompt_number": 14 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 9.9 pageno : 267" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "m = 100. #kg (of 60% solution)\n", + "#w - water added to the original solution\n", + "#w1 - wt. of Na2S2O3.5H2O crystallized\n", + "#w2 - wt. of mother liquor obtained\n", + "#w3 - solution carried away by the crystals\n", + "xf = 0.6 \n", + "Mna2s2o3 = 158 \n", + "Mna2s2o35h2o = 248 \n", + "\n", + "# Calculation \n", + "mcrystals = m * xf * Mna2s2o35h2o / Mna2s2o3 \n", + "# free water available = m + w - 1 - mcrystals\n", + "#concentration of impurity = 1/(w+4.823)\n", + "#total balance, 100 - 1 + w = w1 + w2 + w3\n", + "#w1 + w2 + w3 - w = 99\n", + "#Na2S2O3 balance, 60 = (w1 + w2 * 1.5/2.5 + w3 * 1.5/2.5)*158/248\n", + "#w1 + 0.6 * w2 + 0.6 * w3 = 94.177\n", + "#each gram crystals carry 0.05 kg solution,\n", + "#w3 = 0.05 * w1\n", + "#impurity % = 0.1\n", + "#impurity = w3 /(2.5 * (w+4.823))\n", + "#solving above equations, we get\n", + "w = 14.577 #kg\n", + "w1 = 65.08 #kg\n", + "w2 = 45.25 #kg\n", + "w3 = 0.05 * w1\n", + "\n", + "# Result \n", + "print \"(a)amount of water added = %.2f\"%w,\"kg\"\n", + "print \"(b)amount of Na2S2O3.5H2O crystals added = \",w1,\"kg\"\n", + "m1 = w1 * Mna2s2o3 / Mna2s2o35h2o + w3 * 1.5 * Mna2s2o3 / (2.5 * Mna2s2o35h2o) \n", + "P = m1*100/(m*xf) \n", + "print \"(c)Percentage recovery of Na2S2O3 = %.1f\"%P,\"%\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)amount of water added = 14.58 kg\n", + "(b)amount of Na2S2O3.5H2O crystals added = 65.08 kg\n", + "(c)Percentage recovery of Na2S2O3 = 71.2 %\n" + ] + } + ], + "prompt_number": 15 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 9.10 pageno : 271" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "m = 100. #kg\n", + "Pin1 = 40. #% ( tannin )\n", + "Pin2 = 5. #% ( moisture )\n", + "Pin3 = 23. #% ( soluble non tannin material )\n", + "\n", + "# Calculation \n", + "Pin4 = 100 - Pin1 - Pin2 - Pin3 #% ( insoluble lignin )\n", + "\n", + "# since, lignin is insoluble, all of it will be present in the residue\n", + "Pout1 = 3. #%\n", + "Pout2 = 50. #%\n", + "Pout3 = 1. #%\n", + "Pout4 = 100 - Pout1 - Pout2 - Pout3 \n", + "\n", + "#let W be the mass of residue, then we get\n", + "W = Pin4 * m / Pout4 \n", + "Ptannin = W * Pout1 * 100 / (m * Pin1) \n", + "\n", + "# Result\n", + "print \"Percent of original tannin unextracted = %.1f\"%Ptannin,\"%\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Percent of original tannin unextracted = 5.2 %\n" + ] + } + ], + "prompt_number": 16 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 9.11 pageno : 271\n" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "F = 100. #kg\n", + "\n", + "#F - feed, R - overflow, U - underflow, S - solvent\n", + "#F + S = U + R ( Total balance )\n", + "Poil1 = 49. #% ( 1 - feed )\n", + "Ppulp1 = 40. #%\n", + "Psalts1 = 3. #%\n", + "\n", + "# Calculation \n", + "Pwater = 100 - Poil1 - Ppulp1 - Psalts1 \n", + "Phexane2 = 25. #%(2 - underflow)\n", + "Psalts2 = 2.5 #%\n", + "Poil2 = 15. #%\n", + "Pwater2 = 7.5 #%\n", + "Ppulp2 = 100 - Phexane2 - Poil2 - Pwater2 - Psalts2 \n", + "Poil3 = 25. #% ( 3 - extract )\n", + "\n", + "#taking pulp ( inert ) balance\n", + "U = Ppulp1 * F / Ppulp2 \n", + "\n", + "#oil balance gives, F * Poil1 = U * Poil2 + R * Poil3,from these , we get\n", + "R = (F * Poil1 - U * Poil2)/Poil3 \n", + "S = U + R - F \n", + "\n", + "# Result\n", + "print \"(a)The amount of solvent used for extraction = \",S,\"kg\"\n", + "Precovered = 95. #%\n", + "mhexane2 = Phexane2 * U / 100 \n", + "mrecovered = mhexane2 * Precovered / 100 \n", + "P = mrecovered * 100 / S \n", + "print \"(b)Percent of hexane used that is recovered from the underflow = %.2f\"%P,\"%\"\n", + "Poil = Poil3 * R * 100 / (F * Poil1 ) \n", + "print \"(c)Percent recovery of oil = %.2f\"%Poil,\"%\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)The amount of solvent used for extraction = 128.0 kg\n", + "(b)Percent of hexane used that is recovered from the underflow = 14.84 %\n", + "(c)Percent recovery of oil = 75.51 %\n" + ] + } + ], + "prompt_number": 17 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 9.12 pageno : 274" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "#F = feed(wet solid), V1 = water evaporated(drier), \n", + "#V2 = water evaporated(oven), S1 = Dry solid(drier), S2 = Dry solid(oven)\n", + "# variables \n", + "F = 1000. #kg\n", + "xf = 0.8 \n", + "x1 = 0.15 \n", + "x2 = 0.02 \n", + "\n", + "# Calculation \n", + "#moisture free solid balance for drier, F * ( 1 - xf) = S1 * ( 1 - x1 )\n", + "S1 = F * ( 1 - xf )/(1 - x1) \n", + "\n", + "#total balance for drier , F = S1 + V1\n", + "V1 = F - S1 \n", + "\n", + "#For oven, S1 * ( 1 - x1 ) = S2 * ( 1 -x2 )\n", + "S2 = S1 * ( 1 - x1 )/(1 - x2) \n", + "\n", + "#Also, S1 = S2 + V2\n", + "V2 = S1 - S2 \n", + "\n", + "# Result\n", + "print \"(a)Weight of product leaving the drier = %.2f\"%S1,\"kg\"\n", + "print \" Weight of product leaving the oven = %.2f\"%S2,\"kg\"\n", + "P1 = V1 *100/ (F * xf) \n", + "P2 = V2 *100/ (F * xf) \n", + "\n", + "print \"(b)Percentage of original water removed in drier = %.1f\"%P1,\"%\"\n", + "print \" Percentage of original water removed in oven = %.2f\"%P2,\"%\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Weight of product leaving the drier = 235.29 kg\n", + " Weight of product leaving the oven = 204.08 kg\n", + "(b)Percentage of original water removed in drier = 95.6 %\n", + " Percentage of original water removed in oven = 3.90 %\n" + ] + } + ], + "prompt_number": 19 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 9.13 pageno : 275" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "#Ss = solid flow rate,\n", + "\n", + "Pwaterin = 25. #%\n", + "Pwaterout = 5. #%\n", + "\n", + "# Calculation \n", + "X1 = Pwaterin/(100 - Pwaterin) #kg water/kg dry air\n", + "X2 = Pwaterout/(100 - Pwaterout) #kg water/kg dry air\n", + "\n", + "#form humidity chart,\n", + "Y2 = 0.015 #kg water/kg dry air\n", + "Y1 = 0.035 #kg water/kg dry air\n", + "m = 1. #kg of dry air\n", + "\n", + "#Ss * X1 + Y2 = Ss * X2 + Y1\n", + "Ss = (Y1 - Y2) / ( X1 - X2 ) \n", + "T = 87.5 + 273.15 #K\n", + "P = 101.3 #kPa\n", + "Tstp = 273.15 #K\n", + "Pstp = 101.3 #kPa\n", + "Vstp = 22.4143 #m**3/mol\n", + "V = 100. #m**3\n", + "N = V * P * Tstp / ( Vstp * Pstp * T) \n", + "Nr2 = Y2 * 29 / 18. #kmol of water / kmol of dry air\n", + "Ndryair = N * 1 / (1 + Nr2) \n", + "mdryair = Ndryair * 29 \n", + "mevaporated = mdryair * ( Y1 - Y2 ) \n", + "\n", + "# Result\n", + "print \"(a)total moisture evaporated per 100m**3 of air entering = %.3f\"%mevaporated,\"kg\"\n", + "Ss1 = mdryair * Ss \n", + "mproduct = Ss1 * ( 1 + X2 ) \n", + "print \"(b)mass of finished product per 100m**3 of air entering = %.2f\"%mproduct,\"kg\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)total moisture evaporated per 100m**3 of air entering = 1.914 kg\n", + "(b)mass of finished product per 100m**3 of air entering = 7.18 kg\n" + ] + } + ], + "prompt_number": 20 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 9.14 pageno : 278" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "#F = feed, E = extract, S = solvent, R = Raffinate\n", + "\n", + "xwaterF = 0.7 #Feed\n", + "xalcoholF = 0.3 \n", + "xwaterR = 0.71 #raffinate\n", + "xalcoholR = 0.281 \n", + "xethyR = 0.009 \n", + "xwaterE = 0.008 #Extract\n", + "xalcoholE = 0.052 \n", + "xethyE = 0.94 \n", + "\n", + "#Total balance, R + E = F + S\n", + "F = 100. #kg\n", + "\n", + "#R + E = 100 + S (1)\n", + "#Isopropyl balance, xalcoholR * R + xalcoholE*E = xalcoholF * F\n", + "#0.281*R + 0.052 * E = 30 (2)\n", + "#Ethylene tetra chloride balance, xethyR * R + xethyE * E = S\n", + "#0.009*R + 0.94*E = S (3)\n", + "#Solving equation 1, 2 and 3 simultaneously, we get,\n", + "\n", + "S = 45.1 \n", + "E = 47.04 \n", + "R = 98.06 \n", + "# Calculation and Result\n", + "print \"(a)Amount of solvent used = \",S,\"kg\"\n", + "print \"(b)Amount of extract = \",E,\"kg\"\n", + "print \" Amount of raffinate = \",R,\"kg\"\n", + "mextracted = E * xalcoholE \n", + "P1 = mextracted * 100 / (F * xalcoholF) \n", + "print \"(c)Percent of isopropyl alcohol extracted = %.2f\"%P1,\"%\"\n", + "\n", + "# note : answer may vary because of rounding error.\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Amount of solvent used = 45.1 kg\n", + "(b)Amount of extract = 47.04 kg\n", + " Amount of raffinate = 98.06 kg\n", + "(c)Percent of isopropyl alcohol extracted = 8.15 %\n" + ] + } + ], + "prompt_number": 22 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 9.15 pageno : 282" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "G1 = 100. #kmol\n", + "\n", + "#G1 and G2 be the molar flow rate of the gas at the inlet and the\n", + "# exit of the absorber resp_,y1 and y2 mole fraction at entrance and exit resp_,\n", + "\n", + "y1 = 0.25 #%\n", + "y2 = 0.05 #%\n", + "\n", + "# Calculation \n", + "#air balance gives, G1 * ( 1-y1 ) = G2 * ( 1-y2 )\n", + "G2 = G1 * ( 1-y1 ) / (1 - y2) \n", + "maleaving = G2 * y2 \n", + "maentering = G1 * y1 \n", + "Pabsorbed = (maentering - maleaving) * 100 / ( maentering) \n", + "\n", + "# Result\n", + "print \"Percentage of acetone absorbed = %.2f\"%Pabsorbed,\"%\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Percentage of acetone absorbed = 84.21 %\n" + ] + } + ], + "prompt_number": 23 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 9.16 pageno : 283" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "F = 5000. #kg/h\n", + "P1 = 50. #% (H2O4 in)\n", + "MH2SO4 = 98.016 \n", + "P1gas = 65. #(nitrogen in gas entering)\n", + "P2gas = 35. # ( SO3)\n", + "MN2 = 28. \n", + "MSO3 = 80. \n", + "\n", + "# Calculation \n", + "Mavg = ( MN2 * P1gas + MSO3 * P2gas)/100 #avg molecular wt. of entering gas\n", + "G = 4500. #kg/h\n", + "Ng = G / Mavg \n", + "NN2 = Ng * P1gas / 100 \n", + "NSO3 = Ng - NN2 \n", + "P2 = 75. #% (H2O4 out)\n", + "\n", + "#W be the mass of 75% H2SO4, x and y be the moles of SO3 and water vapour leaving resp_,\n", + "Pwater = 25. #kPa\n", + "Ptotal = 101.3 #kPa\n", + "\n", + "#Pwater / Ptotal = y / ( NN2 + x + y )\n", + "#we get, y = 0.32765 * x + 2.744 (1)\n", + "#Total balance Feed + G = W + (NN2 * 28 + x * 80 + y * 18.016)\n", + "#we get, W + 80*x + 18.016*y = 7727.32 (2)\n", + "#from 1 and 2, 84.9174*x + W = 7352.68 (3)\n", + "#SO3 balance, So3 eneterin with 50% H2SO4 + SO3 in feed gas = SO leaving with 75%H2SO4 + SO3 leaving in exit gas\n", + "#5000*0.5*80/98.016 + 34.09*80 = 80* x + 0.75*W * 80/98.016 (4)\n", + "# from 3 and 4,\n", + "x = 9.74 \n", + "Nabsorbed = NSO3 - x \n", + "Pabsorbed = Nabsorbed * 100 / NSO3 \n", + "\n", + "# Result\n", + "print \"Percentage of SO3 absorbed = %.2f\"%Pabsorbed,\"%\"\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Percentage of SO3 absorbed = 71.43 %\n" + ] + } + ], + "prompt_number": 24 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 9.17 pageno : 287" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "F = 200. #kmol/h\n", + "#F, D and W be the flow rates of the feed, the distillate and residue \n", + "# resp_, xf , xd and xw be the mole fraction of ethanol in the fee, distillate and the residue resp_\n", + "\n", + "xf = 0.10 \n", + "xd = 0.89 \n", + "xw = 0.003 \n", + "\n", + "\n", + "# Calculation \n", + "#total balance gives, F = D + W\n", + "#D + W = 200 (1)\n", + "#Alcohol balance gives, F*xf = D*xd + W*xw\n", + "#0.89*D+0.003*W = 20 (2)\n", + "#solving 1 and 2\n", + "D = 21.87 #kmol/h\n", + "W = 178.13 #kmol/h\n", + "Nawasted = W*xw \n", + "mmakeup = Nawasted * 46*24 \n", + "\n", + "# Result\n", + "print \"The make up alcohol required per day = %.2f\"%mmakeup,\"kg\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The make up alcohol required per day = 589.97 kg\n" + ] + } + ], + "prompt_number": 25 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 9.18 pageno : 287" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "F = 100. #kg\n", + "#F, D and W be the flow rates of the feed, the distillate and bottom \n", + "# product resp_, xf , xd and xw be the mole fraction of methanol in the \n", + "# fee, distillate and the bottom product resp_\n", + "\n", + "xf = 0.20 \n", + "xd = 0.97 \n", + "xw = 0.02 \n", + "#using, F = D + W and F*xf + D*xd + W*xw,we get\n", + "D = 18.95 #kg/h\n", + "W = 81.05 #kg/h\n", + "R = 3.5 \n", + "#R = L / D\n", + "#for distillate = 1kg\n", + "D1 = 1. #kg\n", + "\n", + "# Calculation \n", + "L = R*D1 \n", + "#Taking balance around the condenser,\n", + "G = L + D1 \n", + "mcondensed = G * D / F \n", + "\n", + "# Result\n", + "print \"(a)Amount of distillate = \",D,\"kg\"\n", + "print \" Amount of Bottom Product = \",W,\"kg\"\n", + "print \"(b)Amount of vapour condensed per kg of distillate = \",G,\"kg\"\n", + "print \"(c)Amount of vapour condensed per kg of feed = %.3f\"%mcondensed,\"kg\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Amount of distillate = 18.95 kg\n", + " Amount of Bottom Product = 81.05 kg\n", + "(b)Amount of vapour condensed per kg of distillate = 4.5 kg\n", + "(c)Amount of vapour condensed per kg of feed = 0.853 kg\n" + ] + } + ], + "prompt_number": 26 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 9.19 pageno : 289" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "mdryair = 1. #kg\n", + "Pwater1 = 1.4 #kPa ( Partial pressure at 285K )\n", + "Pwater2 = 10.6 #kPa ( Partial pressure at 320K )\n", + "P = 101.3 # ( Total )\n", + "\n", + "# Calculation \n", + "Ys1 = Pwater2 * 18 / ((P - Pwater2)*29) #( saturation humidity at 320K )\n", + "Ys2 = Pwater1 * 18 / ((P - Pwater1)*29) #( saturation humidity at 285K )\n", + "Ys = 0.03 #kg water / kg dry air. (final humidity)\n", + "\n", + "\n", + "# humidity of air leaving dehumidifier is Ys2 and humidity of bypassed \n", + "# air is Ys1. these 2 streams combine to give humidity of 0.03kg water / kg dry air.\n", + "#therefore, taking balance we get, 1*Ys2 + x * Ys1 = (1 + x)*Ys\n", + "x = (1*Ys2 - 1*Ys)/(Ys - Ys1) \n", + "\n", + "# Result\n", + "print \"(a)Mass of dry air bypassed per kg of dry air sent through the dehumidifier = %.3f\"%x,\"kg dry air\"\n", + "mcondensed = Ys1 - Ys2 \n", + "mwetair = mdryair + Ys1 \n", + "Nwetair = mdryair/29 + Ys1/18.016 \n", + "Vstp = 22.4143 #m**3/kmol\n", + "Vstp1 = Nwetair * Vstp \n", + "T = 320. #K\n", + "P = 101.3 #kPa\n", + "Tstp = 273.15 #K\n", + "Pstp = 101.325 #kPa\n", + "V = Vstp1 * Pstp * T / (P * Tstp) \n", + "Vgiven = 100. #m**3\n", + "mcondensed1 = mcondensed * Vgiven / V \n", + "print \"(b)mass of water vapour condensed in the dehumidifier per 100m**3 of air sent through it = %.4f\"%mcondensed1,\"kg\"\n", + "mfinal = mdryair + x \n", + "mfinalair = mfinal * Vgiven / V \n", + "N = mfinalair / 29. \n", + "Ysn = Ys * 29/18. #kmol water / kmol dry air\n", + "Ntotal = N * (Ysn + 1) \n", + "Vfinal = Ntotal * Vstp * Pstp * T / ( Tstp * P ) \n", + "print \"(c)Volume of final air obtained per 100 cubic metres f air passed through dehumidifier = %.1f\"%\\\n", + "Vfinal,\"m**3\"\n", + "\n", + "# note: answer may vary because of rounding error." + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Mass of dry air bypassed per kg of dry air sent through the dehumidifier = 0.501 kg dry air\n", + "(b)mass of water vapour condensed in the dehumidifier per 100m**3 of air sent through it = 6.3118 kg\n", + "(c)Volume of final air obtained per 100 cubic metres f air passed through dehumidifier = 140.9 m**3\n" + ] + } + ], + "prompt_number": 29 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 9.20 pageno : 292" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "# variables \n", + "F = 100. #kg/h\n", + "xf = 0.2 \n", + "xp = 0.93 \n", + "xr = 0.5/1.5 \n", + "xx = 0.65 \n", + "\n", + "# Calculation \n", + "#R - recycle stream, P - Product stream , W - water separeted and removed\n", + "#component A balance, F * xf = P * xp, that is,\n", + "P = F * xf / xp \n", + "#Total balance, F = P + W,therefore\n", + "W = F - P \n", + "#x be the flow rate of strea entering the filter \n", + "#total balance, x = P + R (1)\n", + "#component A balance , 0.65 * x = 0.5*R/1.5 + 0.93P (2)\n", + "#Solving 1 and 2, we get,\n", + "R = (xx * P - xp * P)/(xr - xx) \n", + "\n", + "# Result\n", + "print \"Flow rate of the recycle stream = %d\"%R,\"kg/h\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Flow rate of the recycle stream = 19 kg/h\n" + ] + } + ], + "prompt_number": 30 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 9.21 pageno : 293" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# variables \n", + "F = 1000. #kg/h\n", + "xfwater = 0.7 \n", + "xpwater = 0.2 \n", + "xrwater = 0.20 \n", + "xswater = 0.5 \n", + "y1 = 0.0025 \n", + "y2 = 0.05 \n", + "\n", + "# Calculation \n", + "#R - recycle, S - stream entering granulator, P - Product, G1 - air entering the drier, G2 - air leaving the drier,\n", + "#takin overall, moisture free balance, F * xf = P * xp\n", + "P = F * ( 1 - xfwater )/(1 - xpwater ) \n", + "# taking material balance at point where recycle strea joins the feed,\n", + "# F = R + S\n", + "#water balance, F*xfwater = R*xrwater + S*xswater,solving this we get,\n", + "R = (-F*xfwater +F*xswater)/(xrwater - xswater) \n", + "S = F + R \n", + "mleaving = P + R #solid leaving the drier\n", + "#dry air entering will there be in air leaving, therefore\n", + "#G1 * ( 1 - y1 ) = G2 * ( 1 - y2 )\n", + "# water balance over the drier gives, S*xswater+G1*y1=G2*y2+(P+R)*xpwater\n", + "#from above 2 equations , we get\n", + "G1 = ((mleaving*xpwater - S*xswater)/(y1 - y2*(1-y1)/(1-y2))) \n", + "\n", + "# Result\n", + "print \"(a)Amount of solid recycled = %.2f\"%R,\"kg/h\"\n", + "mdryair = G1 * (1 - y1) \n", + "print \"(b)circulation rate of air in the drier on dry basis = %.d\"%round(mdryair,-2),\"kg/h\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a)Amount of solid recycled = 666.67 kg/h\n", + "(b)circulation rate of air in the drier on dry basis = 12500 kg/h\n" + ] + } + ], + "prompt_number": 32 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 9.22 pageno : 296" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# variables \n", + "xf = 500. * 10**-6 \n", + "xp = 50. * 10**-6 \n", + "xb = 1600. * 10**-6 \n", + "\n", + "# Calculation \n", + "#F - Feed water rate, B - blow down rate, S - high pressure steam, P - process stream rate\n", + "# total balance, F = P + B\n", + "# Solid balance, F * xf + P * xp = B * xb\n", + "#eliminating P, we get, F * xf + (F - B)*xp = B * xb\n", + "#let F/B be X\n", + "X = (xb + xp)/(xf + xp) \n", + "\n", + "# Result\n", + "print \"the ratio of feed water to the blowdown water = \",X\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "the ratio of feed water to the blowdown water = 3.0\n" + ] + } + ], + "prompt_number": 33 + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/Stoichiometry_And_Process_Calculations/screenshots/construction_of_the__cox_chart.png b/Stoichiometry_And_Process_Calculations/screenshots/construction_of_the__cox_chart.png Binary files differnew file mode 100755 index 00000000..e54e1546 --- /dev/null +++ b/Stoichiometry_And_Process_Calculations/screenshots/construction_of_the__cox_chart.png diff --git a/Stoichiometry_And_Process_Calculations/screenshots/mole_fraction.png b/Stoichiometry_And_Process_Calculations/screenshots/mole_fraction.png Binary files differnew file mode 100755 index 00000000..3023b8e4 --- /dev/null +++ b/Stoichiometry_And_Process_Calculations/screenshots/mole_fraction.png diff --git a/Stoichiometry_And_Process_Calculations/screenshots/temperature_benzene.png b/Stoichiometry_And_Process_Calculations/screenshots/temperature_benzene.png Binary files differnew file mode 100755 index 00000000..4a95bf43 --- /dev/null +++ b/Stoichiometry_And_Process_Calculations/screenshots/temperature_benzene.png |