summaryrefslogtreecommitdiff
path: root/sample_notebooks/NishthaRani/Chapter12.ipynb
blob: 63660758e00b7be645ce3bfe134ad09cc6afc654 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Chapter 12 : Absorption of Gases"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Page No 669 Example 12.1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      " For S02:\n",
      "\n",
      "    kGa = 0.00012 ol/s m**3(kN/m**2)\n",
      "\n",
      " For NH3:\n",
      "\n",
      "    kGa = 0.00016 kmol/s m**3(kN/m**2)\n",
      "\n",
      " For a very soluble gas such as NH3, kGa = KGa.\n",
      "\n",
      "   For NH3 the liquid-film resistance will be small, and:\n",
      "\n",
      "          kGa =KGa = 0.00016 mol/s m**3(kN/m**2)\n"
     ]
    }
   ],
   "source": [
    "from __future__ import division\n",
    "#Overall liquid transfer coefficient KLa = 0.003 kmol/s.m**3(kmol/m**3)\n",
    "\n",
    "#(1/KLa)=(1/kLa)+(1/HkGa)\n",
    "# let (KLa)=x\n",
    "x = 0.003#\n",
    "overall = 1/x#\n",
    "\n",
    "#For the absorption of a moderately soluble gas it is reasonable to assume that the liquid and gas phase resistances are of the same order ofmagnitude, assuming them to be equal.\n",
    "#(1/KLa)=(1/kLa)+(1/HkGa)\n",
    "#let 1/kLa = 1/HkGa = y\n",
    "y = (1/(2*x))#\n",
    "z = (1/y)#            #z is in  kmol/s m**3(kmol/m**3)\n",
    "print \"\\n For S02:\"\n",
    "print \"\\n    kGa = %0.5f ol/s m**3(kN/m**2)\"%(z/50)#\n",
    "print \"\\n For NH3:\"\n",
    "d_SO2 = 0.103#           #diffusivity at 273K for SO2 in cm**2/sec\n",
    "d_NH3 = 0.170#           #diffusivity at 273K for NH3 in cm**2/sec\n",
    "print \"\\n    kGa = %0.5f kmol/s m**3(kN/m**2)\"%((z/50)*(d_NH3/d_SO2)**0.56)#\n",
    "print \"\\n For a very soluble gas such as NH3, kGa = KGa.\"\n",
    "print \"\\n   For NH3 the liquid-film resistance will be small, and:\"\n",
    "print \"\\n          kGa =KGa = %0.5f mol/s m**3(kN/m**2)\"%((z/50)*(d_NH3/d_SO2)**0.56)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Page No 671 Example 12.2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      " d = 0.05 mm\n",
      "\n",
      " kG = 1.19*10**(-8) kmol/m**2sec(N/m**2)\n",
      "\n",
      " kG = 7.59*10**(-4)kg SO2/m**2sec(kN/m**2)\n"
     ]
    }
   ],
   "source": [
    "G = 2#                             #air flow rate in kg/m**2.sec\n",
    "Re = 5160#                         #Re stands for Reynolds number\n",
    "f = 0.02#                         #friction factor = R/pu**2\n",
    "d_SO2 = 0.116*10**(-4)#            #diffusion coefficient in m**2/sec\n",
    "v = 1.8*10**(-5)#                        #viscosity in mNs/m**2\n",
    "p = 1.154#                        #density is in kg/m**3\n",
    "\n",
    "#(hd/u)(Pm/P)(u/p/d_SO2)**0.56 = BRe**(-0.17)=jd\n",
    "\n",
    "def a1():\n",
    "    x = (v/(p*d_SO2))**(0.56)#\n",
    "    return x\n",
    "\n",
    "\n",
    "#jd = f =R/pu**2\n",
    "def a2():\n",
    "    y = f/a1()#\n",
    "    return y\n",
    "#G = pu\n",
    "u = (G/p)#                     #u is in m/sec\n",
    "\n",
    "def a3():\n",
    "    x1 = a2()*u#\n",
    "    return x1\n",
    "\n",
    "def d1():\n",
    "    d = Re*v/(G)#\n",
    "    return d\n",
    "\n",
    "print \"\\n d = %0.2f mm\"%(d1())#\n",
    "R = 8314#            #R is in m**3(N/m**2)/K kmol\n",
    "T = 298#             #T is in Kelvins\n",
    "def kG1():\n",
    "    kG = a3()/(R*T)#\n",
    "    return kG\n",
    "\n",
    "print \"\\n kG = %.2f*10**(-8) kmol/m**2sec(N/m**2)\"%(kG1()*10**(8))#\n",
    "print \"\\n kG = %.2f*10**(-4)kg SO2/m**2sec(kN/m**2)\"%(kG1()*10**(7)*64)#"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Page No 694 Example 12.3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "    x1 = 0.01\n",
      "\n",
      "     NoL =7.38\n"
     ]
    }
   ],
   "source": [
    "from sympy import symbols, solve, log\n",
    "#as the system are dilute mole fractions are approximately equal to mole ratios.\n",
    "#At the bottom of the tower\n",
    "y1 =0.015#            #mole fraction\n",
    "G = 1#                #Gas flow rate is in kg/m**2sec\n",
    "#At the top of the tower\n",
    "y2 = 0.00015#         #mole fraction\n",
    "x2 = 0#\n",
    "L = 1.6#             #liquid flow rate is in kg/m**2.sec\n",
    "Lm = 1.6/18#         #liquid flow rate is in kmol/m**2.sec\n",
    "Gm = 1.0/29#         #gas flow rate is in kmol/m**2.sec\n",
    "\n",
    "x1 = symbols('x1')\n",
    "x11 = solve(Gm*(y1-y2)-Lm*(x1),x1)[0]\n",
    "\n",
    "print \"\\n    x1 = %0.2f\"%(x11)#\n",
    "def henry_law(x):\n",
    "    ye1 = 1.75*x#\n",
    "    return ye1\n",
    "bottom_driving_force = y1 - henry_law(x11)#\n",
    "def log_mean():\n",
    "     lm = (bottom_driving_force-y2)/log(bottom_driving_force/y2)\n",
    "     return lm\n",
    "NoG = (y1-y2)/log_mean()\n",
    "NoL = NoG*1.75*(Gm/Lm)#\n",
    "print \"\\n     NoL =%.2f\"%(NoL)#"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Page No 699 Example 12.4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "     Z =7.80m\n",
      "\n",
      "  Height of transfer unit HoG = 0.375m\n",
      "\n",
      " Number of transfer units NoG = 21.00\n"
     ]
    }
   ],
   "source": [
    "from sympy import symbols, solve\n",
    "from math import ceil\n",
    "Gm = 0.015#\n",
    "KGa = 0.04#\n",
    "top = 0.0003#\n",
    "Y1 = 0.03#\n",
    "Ye = 0.026#\n",
    "bottom = (Y1-Ye)#\n",
    "log_mean_driving_force = (bottom-top)/log(bottom/top)#\n",
    "Z = symbols('Z')\n",
    "Z1 = solve(Gm*(Y1-top)-KGa*log_mean_driving_force*Z,Z)[0]\n",
    "print \"\\n     Z =%.2fm\"%(Z1)#\n",
    "HoG = Gm/KGa#\n",
    "print \"\\n  Height of transfer unit HoG = %.3fm\"%(HoG)#\n",
    "print \"\\n Number of transfer units NoG = %0.2f\"%(ceil(7.79/0.375))#"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Page No 700 Example 12.5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nwxhjTNj+D3ist4aa/CKkAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f4b195450d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The height of the tower is 4.91 meters\n"
     ]
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "from matplotlib.pyplot import plot, show, xlabel, ylabel, title\n",
    "from numpy import arange\n",
    "y1 = 0.10#\n",
    "Y1 = 0.10/(1-0.10)#\n",
    "y2 = 0.001#\n",
    "Y2 = y2#\n",
    "mass_flowrate_gas = 0.95#       #mass flow rate in kg/m**2.sec\n",
    "mass_percent_air = (0.9*29/(0.1*17+0.9*29))*100#\n",
    "mass_flowrate_air = (mass_percent_air*mass_flowrate_gas)##in kg/m**2.sec\n",
    "Gm = (mass_flowrate_air/29)#\n",
    "Lm = 0.65/18#         #Lm is in kmol/m**2.sec\n",
    "#A mass balance between a plane in the tower where the compositions are X and Y and the top of the tower gives:\n",
    "\n",
    "#Y = 1.173X+0.001\n",
    "X = arange(0,0.159,0.001)\n",
    "Y=[]\n",
    "for x in X:\n",
    "    Y.append(1.173*x+0.001)\n",
    "plot(X,Y)#\n",
    "\n",
    "x=[0.021,0.031,0.042,0.053,0.079,0.106,0.159]\n",
    "\n",
    "PG = [12,18.2,24.9, 31.7, 50.0, 69.6, 114.0]\n",
    "i=0\n",
    "Y1=[]\n",
    "while i<7:\n",
    "    Y1.append(PG[(i)]/(760-PG[(i)]))\n",
    "    i=i+1\n",
    "\n",
    "plot(x,Y1)#\n",
    "#xlabel(\"Area under the curve is 3.82m\"%(\"kmolNH3/kmolH2O\"%(\"kmolNH3/kmol air\"\n",
    "\n",
    "              \n",
    "title(\"Operating and equilibrium lines\")\n",
    "xlabel(\"kmol NH3/kmol H2O\")\n",
    "ylabel(\"kmol NH3/kmol air\")\n",
    "show()\n",
    "#If the equilibrium line is assumed to be straight, then:\n",
    "#Gm(Y2 − Y1) = KGaZdeltaPlm\n",
    "\n",
    "#Top driving force\n",
    "deltaY2 = 0.022#\n",
    "#Bottom driving force\n",
    "deltaY1 = 0.001#\n",
    "deltaYlm = 0.0068#\n",
    "Z = (0.0307*0.11)/(0.001*0.688)#\n",
    "print \"The height of the tower is %.2f meters\"%(Z)#"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Page No 708 Example 12.6"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      " Number of theoretical plates = 9\n",
      "\n",
      " LHS = 0.98\n",
      "\n",
      " 1/A = 1.00\n",
      "\n",
      " Gm/Lm = 0.333\n",
      "\n",
      " Actual/minimum Gm/Lm = 1.39\n",
      "\n",
      " Actual Gm/Lm = 0.656\n",
      "\n",
      " 1/A = mGm/Lm = 1.968\n",
      "\n",
      " The actual number of plates are : 17.0\n"
     ]
    }
   ],
   "source": [
    "from sympy import symbols, solve, log\n",
    "print \"\\n Number of theoretical plates = %d\"%((30*0.3))#\n",
    "\n",
    "#At the bottom of the tower:\n",
    "#Flowrate of steam = Gm (kmol/m**22s)\n",
    "#Mole ratio of pentane in steam = Y1, and\n",
    "#Mole ratio of pentane in oil = X1\n",
    "X1 = 0.001#\n",
    "\n",
    "#At the top of the tower:\n",
    "#exit steam composition = Y2\n",
    "#inlet oil composition = X2\n",
    "X2 = 0.06#\n",
    "#flowrate of oil = Lm (kmol/m**2.sec)\n",
    "\n",
    "#The minimum steam consumption occurs when the exit steam stream is in equilibrium with the inlet oil, that is when:\n",
    "#The equilibrium relation for the system may be taken as Ye = 3.0X, where Ye and X are expressed in mole ratios of pentane in the gas and liquid phases respectively.\n",
    "Ye2 = X2*3#\n",
    "#Lmin(X2 − X1) = Gmin(Y2 − Y1)\n",
    "#If Y1 = 0, that is the inlet steam is pentane-free, then:\n",
    "ratio_min = (X2 - X1)/Ye2#\n",
    "\n",
    "\n",
    "#The operating line may be fixed by trial and error as it passes through the point (0.001, 0), and 9 theoretical plates are required for the separation. Thus it is a matter of selecting the operating line which, with 9 steps, will give X2 = 0.001 when X1 = 0.06. This is tedious but possible, and the problem may be better solved analytically since the equilibrium line is straight.\n",
    "\n",
    "#let x = 1/A\n",
    "#for a stripping operation\n",
    "LHS = (X2-X1)/(X2)#\n",
    "print \"\\n LHS = %0.2f\"%(LHS)#\n",
    "x = symbols('x')\n",
    "x1 = solve((x**10-x)-LHS*(x**(10)-1),x)[0]\n",
    "print \"\\n 1/A = %.2f\"%(x1)#\n",
    "#A = Lm/mGm\n",
    "print \"\\n Gm/Lm = %.3f\"%(x1/3)#\n",
    "print \"\\n Actual/minimum Gm/Lm = %.2f\"%(0.457/0.328)#\n",
    "\n",
    "#If (actual Gm/Lm)/(min Gm/Lm) = 2,\n",
    "print \"\\n Actual Gm/Lm = %.3f\"%(.328*2)#\n",
    "x2 = 3*(0.656)#\n",
    "print \"\\n 1/A = mGm/Lm = %.3f\"%(3*0.656)#\n",
    "\n",
    "#y = (1.968)**(N+1)\n",
    "y = symbols('y')\n",
    "y1 = solve(0.983*(y-1)-(y-1.968),y)[0]\n",
    "N = log(y1)/log(1.968)-1#\n",
    "print \"\\n The actual number of plates are : %.1f\"%(ceil(N/0.3))#"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}