# Assignment 2 - 2010 - Solution/Question 3

# Question 3 [4]

Note

This is an example of the type of question you will get in the take-home midterm.

An impure gas stream can be cleaned, by absorbing the impurity into the liquid phase of an appropriate liquid solvent. For example, carbon dioxide can be removed from flue gas by scrubbing it with monoethanolamine; or NO_{2} can be absorbed into water to produce nitric acid.

In this question we will derive the model equations for a sequence of absorber stages (trays), in which a component in the gas phase is absorbed into the liquid phase.

First consider the \(n^\text{th}\) stage in an absorber:

where the molar gas flow is \(G\) and the liquid molar flow is \(L\), and assume these are constant throughout the column. Let the number of moles held-up in the liquid phase of the tray be \(H_n\), the hold-up. And let's only consider a binary system, where the species we are interested in is called A, and the absorbing liquid is species B.

The mol **fraction** of species A, in the gas phase, leaving the tray is \(y_{A,n}\), and we also have \(y_{B,n}\), the mol fraction of B leaving: this gives of course \(y_{A,n} + y_{B,n} = 1\). But since we are interested only in species A in this question, and because we can always calculate B by subtraction from 1.0, we will drop the A and B subscripts, and only write -- for example -- \(y_n\) to denote the gas mol fraction of A leaving the \(n^\text{th}\) stage of the absorber.

Similarly, the mol fraction of A, in the liquid phase, leaving the stage is \(x_n\). And we will denote the liquid mol fraction of A entering as \(x_{n+1}\), while the gas-phase mol fraction of A entering is defined as \(y_{n-1}\).

Using Raoult's Law, and assuming fairly ideal conditions, and that the liquid and vapour phase are well-mixed and in equilibrium, we may relate the concentrations in the gas and liquid phase as:

where \(P_\text{total}\) is the total pressure in the absorber, and \(P_\text{A}\) is the pure-component vapour pressure of A, at the given conditions, and \(\gamma_A\) is an activity coefficient that corrects for non-idealities (cross-reference your thermodynamics course for more background on this equation). In this question you may assume that \(\beta\) is constant throughout the absorber.

Write down a

**dynamic**mass balance for species A, in terms of the nomenclature above, for this \(n^\text{th}\) stage in the absorber tower.Now write down the

**steady-state**mass-balance equation for the above, but only in terms of liquid-phase mol fractions. Also divide the steady-state tray balance equations through by \(\beta G\) and simplify them using the term \(\delta = \displaystyle \frac{L}{\beta G}\)Now repeat this previous step, and write the steady-state mass-balance equations for the five-stage system shown here.

Rewrite these mass-balance equations in matrix form, \(Ax = b\), where:

\[\begin{split}x = \left[\begin{array}{c} y_F \\ x_1 \\ x_2 \\ x_3 \\ x_4 \\ x_5 \\ x_F \\ y_5 \end{array}\right]\end{split}\]Write a function that will generate the \(A\) matrix and \(b\) vector, given the variables in the system. Use this function and solve the system of equations for the two cases below:

Case \(G\) \(L\) \(\beta\) \(x_F\) \(y_F\) Case I 100 150 0.6 0.05 0.35 Case II 100 50 0.6 0.05 0.35 In each case, we are obviously interested in the liquid-phase concentration profile along the column, \(x_F\) down to \(x_1\). Report these values and explain whether your answers make physical sense, or not, for the two cases.

## Solution

The dynamic mass balance for the \(n^\text{th}\) tray:

\[\begin{split}\frac{H dx_n}{dt} &= L x_{n+1} + Gy_{n-1} - Lx_n - Gy_n \\ H \frac{dx_n}{dt} &= L(x_{n+1} - x_n) + G(y_{n-1} - y_n)\end{split}\]At steady state we have \(\displaystyle \frac{dx_n}{dt} = 0\). Further, using that \(y_n = \beta x_n\), and the definition of \(\delta = \displaystyle \frac{L}{G\beta}\), we can simplify the previous equation to:

\[\begin{split}0 &= L(x_{n+1} - x_n) + G \beta (x_{n-1} - x_n) \\ 0 &= x_{n-1} - \delta x_n - x_n + \delta x_{n+1} \\ 0 &= x_{n-1} - (\delta + 1) x_n + \delta x_{n+1}\end{split}\]For the system with 5 trays, we have:

- \(0 = \displaystyle \frac{y_F}{\beta} - (\delta + 1)x_1 + \delta x_2\)
- \(0 = x_1 - (\delta + 1)x_2 + \delta x_3\)
- \(0 = x_2 - (\delta + 1)x_3 + \delta x_4\)
- \(0 = x_3 - (\delta + 1)x_4 + \delta x_5\)
- \(0 = x_4 - (\delta + 1)x_5 + \delta x_F\)

We require a square matrix for \(A\), so we add 3 other equations to the above 5 tray balances. These three equations correspond to the known fractions of \(A\) in the inlet gas and liquid streams, as well as the equation that relates \(y_5\) to \(x_5\).

\[\begin{split}Ax &= b \\ \left( \begin{array}{cccccccc} 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ \displaystyle \frac{1}{\beta} & -(\delta + 1) & \delta & 0 & 0 & 0 & 0 & 0 \\ 0 & 1 & -(\delta + 1) & \delta & 0 & 0 & 0 & 0 \\ 0 & 0 & 1 & -(\delta + 1) & \delta & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 & -(\delta + 1) & \delta & 0 & 0 \\ 0 & 0 & 0 & 0 & 1 & -(\delta + 1) & \delta& 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 0 & 0 & -\beta & 0 & 1 \\ \end{array} \right) \left( \begin{array}{c} y_F \\ x_1 \\ x_2 \\ x_3 \\ x_4 \\ x_5 \\ x_F \\ y_5 \end{array} \right) &= \left( \begin{array}{c} y_F \\ 0 \\ 0 \\ 0 \\ 0 \\ 0 \\ x_F \\ 0 \end{array} \right)\end{split}\]

**Note**: Assuming \(y_5=0\) (complete separation) instead of making the equilibrium assumption \(y_5-\beta x_5=0\) will change the last row of the above matrix as having zero element instead of \(-\beta\). This approach only affects the result of \(y_5\) itself because \(y_5\) does not participate in any other equations. **Both solutions will be accepted**.

- The code below defines functions for the \(A\) matrix and the \(b\) vector, and then solves the system for the two cases. The liquid concentration profiles through the column are obtained as follow:

Case I (\(L=150\)): Impurity [%] in the liquid stream, top to bottom: 5.00, 5.33, 6.15, 8.21, 13.3, 26.2; \(y_5 = 3.20\)

Case II (\(L=50\)): Impurity [%] in the liquid stream, top to bottom: 5.00, 18.4, 29.5, 38.8, 46.5, 53.0; \(y_5 = 11.0\)

**Discussion**: The only difference between Case I and case II is the amount of the liquid solvent \(L\) used in the absorber. One expects that if a lower flow rate of solvent is used, yet the hold-up on each tray is the same, that the concentrations of the impurity in the liquid phase will be higher on each tray. This is indeed shown in the results. However, the outlet concentration of impurity in the gas phase is going to be higher (less impurity is removed) at the lower liquid flow rate, since absorption of the impurity into the liquid phase is inversely proportional to the impurity already in the liquid phase (due to concentration gradients).

You can verify for yourself that as the liquid flow rate is increased, keeping the gas flow constant, that the limiting outlet concentration in the gas phase is 3.0%, the amount that is in equilibrium with an "infinite" liquid composition of 5%. Also, the outlet liquid-phase concentration tends to 5% across all trays as \(L \rightarrow \infty\).

MATLAB code | Python code |
---|---|

```
% Define functions for A and b. Note: this form of defining a
% function is called an anonymous function. The result of the
% statement on the right, assigned to the variable on the left,
% A_func, is what is known as a function handle. Type
% >> help function_handle for more information.
%
% You could have also defined a function, in a separate MATLAB
% file for this question.
A_func = @(b,d) [1 zeros(1,7); ...
1/b -(d+1) d zeros(1,5); ...
0 1 -(d+1) d zeros(1,4); ...
0 0 1 -(d+1) d zeros(1,3); ...
zeros(1,3) 1 -(d+1) d 0 0; ...
zeros(1,4) 1 -(d+1) d 0; ...
zeros(1,6) 1 0; ...
zeros(1,5) -b 0 1];
% y_F, x_1, x_2, x_3, x_4, x_5, x_Feed, y_5 (outlet gas conc)
b_func = @(y_F,x_F) [y_F, 0, 0, 0, 0, 0, x_F, 0]';
% Case I:
G = 100.0;
L = 150.0; % or use 50.0
beta = 0.6;
d = L/(G*beta);
y_F = 0.35;
x_F = 0.05;
A = A_func(beta, d);
b = b_func(y_F,x_F);
x = A\b;
% Check: norm(A*x - b) = 0.0
x = x * 100;
fprintf('Gas_exit = %f\n', x(8))
fprintf ('Gas_f = %f\n', x(1))
fprintf(['Liquid concentration profile: top to bottom: %f, ' ...
'%f, %f, %f, %f, %f\n'], x(7), x(6), x(5), x(4), x(3), x(2))
``` |
```
import numpy as np
G = 100.0
L = 150.0 # or use 50.0
b = 0.6
d = L/(G*b)
y_F = 0.35
x_F = 0.05
A = np.eye(8)
A[1,1] = A[2,2] = A[3,3] = A[4,4] = A[5,5] = -(d+1)
A[1,2] = A[2,3] = A[3,4] = A[4,5] = A[5,6] = d
A[2,1] = A[3,2] = A[4,3] = A[5,4] = 1.0
A[1,0] = 1/b
A[7,5] = -b
# y_F, x_1, x_2, x_3, x_4, x_5, x_Feed, y_5 (outlet gas conc)
b = np.array([y_F, 0, 0, 0, 0, 0, x_F, 0])
x = np.linalg.solve(A, b)
# np.linalg.norm(np.dot(A,x) - b)
x *= 100.0
print(x)
print('Gas_exit = %f' % x[7])
print('Gas_feed = %f' % x[0])
print(('Liquid concentration profile: top to bottom: %f, %f'
'%f, %f, %f, %f' % (x[6], x[5], x[4], x[3], x[2], x[1])))
``` |