McCabe-Thiele Method for an Ideal Binary Mixture
Author's Data: Housam BINOUS
Department of Chemical Engineering
National Institute of Applied Sciences and Technology
Tunis, TUNISIA
Email: binoushousam@yahoo.com

Equilibrium curve for a constant relative volatility equal to 2.45

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

plt0 = 
      Plot[equilb[x], {x, 0, 1}, 
        PlotStyle -> 
          RGBColor[1, 0, 
            0], 
Epilog -> {RGBColor[0, 1, 0], 
            Line[{{0, 0}, {1, 1}}]}]

Distillate, Bottom and Feed Compositions

xd = 0.9;

xb = 0.1;

zf = 0.5;

Drawing Feed Line, determining of the pinch point and obtaining the Minimum Reflux Ratio. The feed is a two phase mixture with a feed quality is q=0.85.

feed = 
      Function[With[{q = 0.85}, (q  #/(q - 1) - 
              zf/(q - 1))]]

pinch = FindRoot[feed[x] ==  equilb[x], {x, 0.5}]

xpinch = pinch[[1, 2]]

ypinch = feed[xpinch]

plt1 = 
      Plot[feed[x], {x, xpinch, zf}, PlotStyle -> RGBColor[0, 0, 1], 
        PlotRange -> {{0, 1}, {0, 1}}
]

opertRect = 
      Function[ypinch + (# - xpinch)/(xd - xpinch) (xd - 
                ypinch)]

opertRect[xd]

opertRect[xpinch]

opertStrp = 
      Function[ypinch + (# - xpinch)/(xb - xpinch) (xb - 
                ypinch)]

opertStrp[xpinch]

opertStrp[xb]

plt2 = 
      Plot[opertRect[x], {x, xpinch, xd}, 
        PlotStyle -> RGBColor[0, 1, 1]]

plt3 = 
      Plot[opertStrp[x], {x, xb, xpinch}, 
        PlotStyle -> RGBColor[1, 0, 1]]

Show[plt0, plt1, plt2, plt3]

Rmin =  (xd - ypinch)/(xd - 
                xpinch)/(1 - (xd - ypinch)/(xd - xpinch)) // 
        Simplify

Real Relux Ration is 1.5 times larger than the minimum reflux ration

R = 1.5 Rmin

Operating line of the rectifying section

OpRect = Function[R/(R + 1) # + xd/(R + 1)]

Intersection Between Feed Line and Rectifying Operating Line

inters = FindRoot[feed[x] ==  OpRect[x], {x, 0.5}]

xinters = inters[[1, 2]]

yinters = OpRect[xinters]

Drawing operating lines for rectfying and stripping sections

plt4 = 
      Plot[OpRect[x], {x, xinters, xd}, 
        PlotStyle -> RGBColor[0, 1, 1]]

OpStrp = 
      Function[yinters + (# - xinters)/(xb - xinters) (xb - 
                yinters)]

plt5 = 
      Plot[OpStrp[x], {x, xb, xinters}, 
        PlotStyle -> RGBColor[1, 0, 1]]

plt6 = 
      Plot[feed[x], {x, xinters, zf}, PlotStyle -> RGBColor[0, 0, 1], 
        PlotRange -> {{0, 1}, {0, 1}}
]

Show[plt0, plt6, plt4, plt5]

Computing the number of equilibrium stages and Drawing the McCabe and Thiele Diagram. 9 stages are need for this distillation problem. Optimum feed stage location is fifth stage.

x =. ; y =. ;

y[0] = xd; x[0] = xd; i = 0;

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

i = i - 1

While[
      x[i] > xb, {v = FindRoot[y[i] ==  equilb[u], {u, 0.5}][[1, 
              2]], t = OpStrp[v], x[i + 1] = v, 
        y[i + 1] = t, 
i++, 
        Print[x[i], " ",  i, " ", y[i]]}]

tbl1 = 
        Table[Line[{{x[i], y[i - 1]}, {x[i], y[i]}}], {i, 1, 
            9}];

tbl2 = 
        Table[Line[{{x[i], y[i]}, {x[i + 1], y[i]}}], {i, 0, 
            8}];

Show[plt0, plt6, plt4, plt5, Graphics[{tbl1, tbl2}]]

Taking into account the Murphree liquid efficiency=0.5.Computing
the number of equilibrium stages and Drawing the McCabe and Thiele Diagram. Less than 19 stages are need for this distillation problem. Optimum feed stage location is stage number 9.

x =. ; y =. ; Eml = 0.5;

y[0] = xd; x[0] = xd; i = 0;

While[
      x[i] > xb, {Print[x[i], " ",  i, " ", y[i]], 
        v = FindRoot[y[i] ==  equilb[u], {u, 0.5}][[1, 2]], 
        t = OpRect[Eml (v - x[i]) + x[i]], 
        If[x[i] > xinters, {x[i + 1] = Eml (v - x[i]) + x[i], 
            y[i + 1] = t}], 
i++}]

i = i - 2

While[
      x[i] > xb, {v = FindRoot[y[i] ==  equilb[u], {u, 0.2}][[1, 
              2]], t = OpStrp[Eml (v - x[i]) + x[i]], 
        x[i + 1] = Eml (v - x[i]) + x[i], 
        y[i + 1] = t, 
i++, 
        Print[x[i], " ",  i, " ", y[i]]}]

x[19] = v; y[19] = OpStrp[x[19]];

tbl1 = 
        Table[Line[{{x[i], y[i - 1]}, {x[i], y[i]}}], {i, 1, 
            19}];

tbl2 = 
        Table[Line[{{x[i], y[i]}, {x[i + 1], y[i]}}], {i, 0, 
            18}];

Show[plt0, plt6, plt4, plt5, Graphics[{tbl1, tbl2}]]