Application of the Riccati Equation 
to Solve Adsorption Problems
Author's Data: Housam Binous
Department of Chemical Engineering
National Institute of Applied Sciences and Technology
Tunis, TUNISIA
Email: binoushousam@yahoo.com

Acknowledgement :

The Riccati equation obtained when solving an adsorption problem can be found in Applied Mathematics and Modeling for Chemical Engineers by Rice and Do, Wiley, 1995.

Solution of the Riccati equation

sol = 
      RSolve[x[n + 1] x[n] + Ad x[n + 1] + Bd x[n] + Cd == 0, x[n], 
          n] // FullSimplify

Expressions for Ad, Bd and Cd for the adsorption problem

Ad = ((V Y1 -  L X0 - V)/L)

Bd = (1/K)

Cd = ((V Y1 - L X0)/(L K))

Air rate V=3.5 Kg/s

V = 3.5;

Clean Charcol (X0=0) enters the system at L=2.5 Kg:s

X0 = 0; L = 2.5;

Remove acetone from air such that: 
YN+1=0.222 Kg acetone/ Kg air 
and Y1=0.0202 Kg acetone/ Kg air

Y1 = 0.0202;

Equilibrium constant K=0.5

K = 0.5;

Values of the constants Cd, Bd and Ad

Cd

Bd

Ad

Exit charcoal contains 0.28525 Kg acetone/Kg charcoal

((L X0 + V Y[N + 1] -  V Y1)/L) /. 
      Y[N + 1] ->  0.222

We need exactly n=3.45 plates to obtain air with Y1 Kg acetone/ Kg air from YN+1  Kg acetone/ Kg air

FindRoot[{First[(x[n] /. sol /. C[1] ->  C1 /. 
                n ->  0)] ==  X0, 
        First[(x[n] /. sol /. C[1] ->  C1)] ==  
          0.28252}, {C1, -300}, {n, 3}]

Equilibrium function

equilb = 
      Function[With[{a = 0.5}, (a #/(1 + (a) #))]]

Operating line

OpRect = 
      Function[With[{L = 2.5, V = 3.5, X0 = 0}, 
          L/V # + Y1 - L X0/V]]

Stepping off stages, we find a similar value as above (i.e. 3.36 plates)

x[0] = X0; i = 0; y[0] = Y1;

While[
      x[i] < 0.5, {Print[x[i], " ",  i, " ", y[i]], 
        v = FindRoot[y[i] ==  equilb[u], {u, 0.5}][[1, 2]], 
        t = OpRect[v], 
        If[v < 0.5, {x[i + 1] = v, 
            y[i + 1] = t}], 
i++}]

(0.28252 - 0.20954786)/(0.4092816 - 0.20954786)