**Note: This article assumes you have rudimentary knowledge of how a simple distillation column operates. Though much of the basics of the simple model for a distillation column will be covered below, it should not be considered as a stand alone reference.*

# Introduction

While taking my separations and mass transfer operations course at UF, I took a particularly interesting exam where I was tasked with predicting the performance of a distillation column with two inputs. This may be getting ahead of myself, as the problem’s information was written into the proof, but the problem was as follows:

## The Test Problem

Given a distillation column separating n-pentane and n-heptane, with a feed rate of 200 kgmol/hr of a 40 mol% n-pentane liquid at bubble point, a 95 mol% distillate stream, a 5 mol% bottoms stream, a 30 mol% side stream with a flow rate out equal to that of the bottoms leaving, a reflux ratio equal to twice that of the minimum, and a 50% average tray efficiency, use the McCabe-Thiele graphical method and the provided vapor-liquid equilibrium data to determine a) the flow rate and composition of all streams, b) the minimum reflux ratio, c) the number of theoretical plates required, and d) the optimum placement of the feed stream and side stream.

So, the information given so far is

- (negative sign due to opposite orientation)

##### Vapor-Liquid Equilibrium Data for the n-Pentane/n-Heptane System

x | y |
---|---|

1.000 | 1.000 |

0.867 | 0.984 |

0.594 | 0.925 |

0.398 | 0.836 |

0.254 | 0.701 |

0.145 | 0.521 |

0.059 | 0.271 |

0.000 | 0.000 |

## Two Solution Methods

There are two solution methods that may be used when using the McCabe-Thiele graphical method. The classical method uses the assumptions placed on the system explicitly to determine an analytical solution for either the stripping operating line or the enriching operating line, then the operating line between the two feeds, after which the remaining operating line is found trivially by applying the rules implicit to Cartesian geometry (two points define a single line in a plane). The other method uses the lever rule to combine the feeds and allows for the trivial solution of a single feed column to be used. Beyond the use of the lever rule, all that is required is on of the effluent operating lines. After determining the combined system, all that is left is to connect the remaining points with their respective operating lines. The basis of the proof is that the method employing the lever rule is simply a mathematical manipulation of the classical method. As it is a simple transform rule, the two methods are analytically identical.

## How to Prove the Methods are the Same

To prove the two methods are identical, the intersections of the various lines were determined and the resulting coordinate pairs were then set as ratios of like coordinates and then reduced to eliminate variables. The resulting ratios were then inspected to determine whether or not the coordinates would be the same (a ratio of one) in all cases. Needless to say, all inspected intersections produced ratios of one, but the proof did lend itself to generalization, which will be discussed after the proof is applied to the initial problem.

# System Definition

The system is a distillation column with two feed streams located by their respective optimum placements, a distillate effluent stream, and a bottoms effluent stream. Each respective theoretical plate in the column is designated by its index relative to the streams crossing the boundary between the top of the column and the top tray region and is associated with liquid streams entering from above () and exiting below () and vapor streams entering from below () and exiting above (). The primary feed stream () is designated as entering the column at tray and the secondary feed stream () at tray . The vapor stream leaving the top of the column () is condensed with an ideal heat exchanger with thermal duty and then splits into the distillate stream () and the reflux stream (). The liquid stream leaving the bottom () is sent to an ideal reboiler, with thermal duty , which splits the flow between the liquid bottoms stream () and the vaporized boilup stream (). All liquid compositions are designated as associated mole fractions and all vapor compositions are similarly designated as . All side streams are also associated with their fractional quality () which is the degree to which the stream has passed the VLE transition and is defined by the difference of the saturated vapor enthalpy and the stream enthalpy scaled by the difference of enthalpies for each respectively saturated fluid phase (eg. ).

## System Assumptions

These are intentionally written as braodly as possible as they will be used for the generalization of the proof to columns of arbitrary design.

- Equimolar overflow ( and )
- No sub-cooling of the reflux entering at the top or super-heating of the boilup at the bottom
- Net positive feed into the column from side streams ()
- Side streams are at bubble point ()

# 1.0 Solution Method 1: The Classical McCabe-Thiele Graphical Method

## 1.1.0 Mass Balances

### 1.1.1 Overall Mass Balance

First, the sum of the mass entering and the mass exiting must be equal to zero. There are no reactions or other structural changes to the chemicals, therefore molar flows may be used as a proxy for the associated mass flows. For sake of convenience, the distillate and bottoms streams are designated as negative flows into the column as well as all explicit side draw streams. Feed streams are assumed to be positive flows into the column, but may flow in either direction so long as the column receives a net positive flow.

Eq. 1-1)

Next, given the assumptions above, the sum of all flows of a given chemical species must also be zero.

Eq. 1-2)

### 1.1.2 Mass Balance on the Top (Enriching) Section

Beginning with a rearrangement of the mass balance on the top plate:

Eq. 1-3 and Eq. 1-4)

Using the mass balance across the condenser:

Eq. 1-5 and Eq. 1-6)

Eq. 1-7)

Introducing a quantity to signify the ratio of flows exiting and recycling at the top of the column:

Eq. 1-8)

Rearranging to allow substitution and simplification:

Eq. 1-9)

Finally, the operating line for the enriching section is produced:

Eq. 1-10)

### 1.1.3 Mass Balance Across Plate

The mass balance across plate is given by

Eq. 1-11 and Eq. 1-12)

### 1.1.4 Mass Balance Between Plate and Plate

The mass balance between plate and plate is given by

Eq. 1-13 and Eq. 1-14

### 1.1.5 Mass Balance Across Plate

The mass balance across plate is given by

Eq. 1-15 and Eq. 1-16)

### 1.1.6 Mass Balance on Bottom (Stripping) Section

The mass balance across the bottom (stripping) section is given by

Eq. 1-17 and Eq. 1-18)

## 1.2.0 Operation Lines and q-Lines

### 1.2.1 Enriching Operation Line

This is the result, Eq. 1-10, derived in section 1.1.2:

Eq. 1-19)

### 1.2.2 Stripping Operation Line (Incomplete Form)

Starting from Eq. 1-18 from section 1.1.6:

Eq. 1-20)

Including from section 1.1.5:

Eq. 1-21 and Eq. 1-22)

And then substituting yields:

Eq. 1-23)

### 1.2.3 Operation Line Between Stream F and Stream G

Starting with Eq. 1-13 and Eq. 1-14 from section 1.1.4:

Eq. 1-24 and Eq. 1-25)

Which rearranges to yield the incomplete form:

Eq. 1-26)

Using substitutions from Eq. 1-11 and Eq. 1-12 in section 1.1.3 and Eq. 1-15 and Eq. 1-16 from section 1.1.5 yields:

Eq. 1-27)

Further substitution using Eq. 1-17 from section 1.1.6 in the numerator of the second term and subsequent rearrangement of said numerator yields:

Eq. 1-28)

Combining Eq. 1-14, Eq. 1-16, Eq. 1-17, and Eq. 1-18 and rearranging yields the relationship

Eq. 1-29)

Substitution using Eq. 1-29 into Eq. 1-26 yields

Eq. 1-30)

Which rearranges to yield

Eq. 1-31)

Which finally yields the completed operating line

Eq. 1-32)

### 1.2.4 q-Line for Stream F

Given by definition the q-line for stream is

Eq. 1-33)

Combining Eq. 1-10 in section 1.1.2 and Eq. 1-28 in section 1.2.3 and rearranging then canceling out , , and yields

Eq. 1-34)

Which may be equated with Eq. 1-33 and rearranged to yield

Eq. 1-35)

Combining this with Eq. 1-1 and Eq. 1-2 from section 1.1.1 and rearranging yields

Eq. 1-36)

Which also rearranges to yield Eq. 1-29 from section 1.2.3.

### 1.2.5 q-Line for Stream G

The q-line for stream is trivially given, as was seen with stream , by

Eq. 1-37)

### 1.2.6 Point of Intersection of Enriching Operation Line and Operation Line Between Stream F and Stream G

Equating Eq. 1-10 from section 1.1.2 and Eq. 1-32 from section 1.2.3 at the intersection yields

Eq. 1-38)

Solving for and simplifying yields

Eq. 1-39)

Plugging Eq. 1-39 back into Eq. 1-10 and simplifying yields

Eq. 1-40)

### 1.2.7 Point of Intersection of Operation Line Between Stream F and Stream G and q-Line for Stream G

Equating Eq. 1-32 from section 1.2.3 and Eq. 1-37 from section 1.2.5 at the intersection yields

Eq. 1-41)

Solving for and simplifying yields

Eq. 1-42)

Plugging Eq. 1-42 back into Eq. 1-37 and simplifying yields

Eq. 1-43)

### 1.2.8 Stripping Operation Line (Complete Form)

The final operation line may be constructed from the known points at either endpoint, and .

The operation line is constructed from the rearranged point-slope form, given by

Eq. 1-44)

Notice that has been replaced by as they are the same value.

Substituting into Eq. 1-44 using Eq. 1-42 and Eq. 1-43 from section 1.2.7 and rearranging yields the complete form of the stripping operation line

Eq. 1-45)

## 1.3.0 Solution of the Test Problem

The original problem can now be solved using the data provided and the equations derived.

### 1.3.1 Plot the VLE Data

First, the equilibrium data provided is plotted.

### 1.3.2 Plot the VLE Data Scaled for Efficiency

Then the equilibrium line is adjusted to reflect the column’s efficiency.

### 1.3.3 Solve the Overall Mass Balance and Plot Composition Lines

Next, the mass balance is solved to determine the compositions and flow rates of all streams. Then lines denoting the respective compositions of the individual streams are placed.

### 1.3.4 Plot q-Lines for All Streams

q-lines are plotted for all streams. Since the bottoms and distillate streams leave as liquids at bubble point, their respective q-lines are vertical.

### 1.3.5 Determine the Minimum Reflux Ratio

is determined by finding the slope of the line from the distillate composition point to the first pinch point along the bounding VLE curve before or at the feed stream or side stream of interest and then using the slope from Eq. 1-10 in section 1.1.2.

### 1.3.6 Plot the Operation Lines

Use the equations derived above (Eq. 1-10, Eq. 1-32, and Eq. 1-45) to plot the operation lines.

### 1.3.7 Plot the Plate Locations

To complete the problem, the plate lines are drawn between the bounding VLE curve and the contiguous operation lines, starting at the distillate composition point and ending at the tray crossing the bottoms composition boundary. The number of triangles represents the number of trays required and the triangles containing the composition points for the feed streams and side streams are the optimal placement of the respective streams.

## 1.4.0 Automation Using Mathematica

The plots above were generated using some of the results of this proof as derived in a later section. This may be jumping the gun a little, but the code for this section’s plots is given below. Reading through the remainder of the proof is recommended before trying to understand the details of the math behind the plot generation.

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 |
Module[{equilibriumdata,flowrates,compositions,qvalues,efficiency,refluxratiomultiplier,columnsolver},{ flowrates={a[1],200,-a[2],a[2]}; compositions={0.95,0.40,0.30,0.05}; qvalues={1.0,1.0,1.0,1.0}; efficiency=0.5;refluxratiomultiplier=2; equilibriumdata={ {0.000,0.000}, {0.059,0.271}, {0.145,0.521}, {0.254,0.701}, {0.398,0.836}, {0.594,0.925}, {0.867,0.984}, {1.000,1.000} }; columnsolver[eqdat_,flwrt_,cmps_,qvs_,eff_,rm_]:=DynamicModule[{ (*Inputs*)eqdata=eqdat,flows=flwrt,comps=cmps,qvals=qvs,ep=eff,rmult=rm, (*Data Sets and Functions*)eqfn,epfn,epdata,compline,qline,qlinefn,opline,oppoints,oppointsfn,oplinefn, xqopfn,rminline,rmin,xrminfn,rd,plateline,hplateline,vplateline,platepoints, (*Displays, Plots, and Graphics*)step1display,step2display,step3display,step4display,step5display, step6display,plotsdisplay,datadisplay,baseplot,eqplot,epplot,complinegraphics,qlinegraphics, oplinegraphics,platelinegraphics, (*Iteration and Misc.*)ns,np,i,j,size },{ ns=Length[flows]; (*Calculate any missing inputs*) {flows,comps}={flows,comps}/.ToRules[Reduce[{Sum[flows[[i]],{i,2,ns-1}]==flows[[1]]+flows[[ns]],Sum[flows[[i]]*comps[[i]],{i,2,ns-1}]==flows[[1]]*comps[[1]]+flows[[ns]]*comps[[ns]]}]]; eqfn:=Interpolation[eqdata,InterpolationOrder->2]; epdata:=Table[{eqdata[[i,1]],eqdata[[i,1]]+ep*(eqdata[[i,2]]-eqdata[[i,1]])},{i,1,Length[eqdata]}]; epfn:=Interpolation[epdata,InterpolationOrder->2]; qlinefn[q_,x0_,x_]:=(q*x-x0)/(q-1); xrminfn[index_,fn_]:=(z/.Flatten[FindRoot[fn[z]==qlinefn[qvals[[index]],comps[[index]],z],{z,0,1}]]); rmin[index_,fn_]:=((comps[[1]]-fn[If[qvals[[index]]==1,comps[[index]],xrminfn[index,fn]]])/(comps[[1]]-If[qvals[[index]]==1,comps[[index]],xrminfn[index,fn]]))/(1-(comps[[1]]-fn[If[qvals[[index]]==1,comps[[index]],xrminfn[index,fn]]])/(comps[[1]]-If[qvals[[index]]==1,comps[[index]],xrminfn[index,fn]])); rd:=rmult*rmin[2,epfn]; compline[index_,num_,x_]:=Line[{{x,0},{x,If[index==1||index==num,1,x]}}]; qline[q_,x_]:=Line[{{x,x},Which[q>=1-x,{1+(x-1)/q,1},q>0,{0,x/(1-q)},q==0,{0,x},q<0,{0,1+(x-1)/q}]}]; rminline[index_,fn_]:=Line[{{comps[[1]],comps[[1]]},{If[qvals[[index]]==1,comps[[index]],xrminfn[index,fn]],fn[If[qvals[[index]]==1,comps[[index]],xrminfn[index,fn]]]}}]; oplinefn[index_,x_]:=((rd+Sum[qvals[[i]]*flows[[i]]/flows[[1]],{i,1,Min[index,ns-1]}]-qvals[[1]])*x-comps[[ns]]*flows[[ns]]/flows[[1]]+Sum[comps[[i]]*flows[[i]]/flows[[1]],{i,index+1,ns-1}])/(1+rd-Sum[(1-qvals[[i]])*flows[[i]]/flows[[1]],{i,1,index}]); xqopfn[index_]:=If[index==1,comps[[1]],If[index==ns,comps[[ns]],(comps[[index]]+(qvals[[index]]-1)*(-comps[[ns]]*flows[[ns]]/flows[[1]]+Sum[comps[[i]]*flows[[i]]/flows[[1]],{i,index+1,ns-1}])/(1+rd-Sum[(1-qvals[[i]])*flows[[i]]/flows[[1]],{i,1,index}]))/(qvals[[index]]-(qvals[[index]]-1)*(rd+Sum[qvals[[i]]*flows[[i]]/flows[[1]],{i,1,Min[index,ns-1]}]-qvals[[1]])/(1+rd-Sum[(1-qvals[[i]])*flows[[i]]/flows[[1]],{i,1,index}]))]]; opline[index1_,index2_]:=Line[{{xqopfn[index1],oplinefn[index1,xqopfn[index1]]},{xqopfn[index2],oplinefn[index2,xqopfn[index2]]}}]; oppoints:=Table[{xqopfn[i],oplinefn[i,xqopfn[i]]},{i,1,ns}]; oppointsfn:=Interpolation[oppoints,InterpolationOrder->1]; hplateline[x_,fn_]:=Line[{{x,oppointsfn[x]},{(z/.Flatten[FindRoot[fn[z]==oppointsfn[x],{z,0,1}]]),oppointsfn[x]}}]; vplateline[x_,fn_]:=Line[{{x,oppointsfn[x]},{x,fn[x]}}]; platepoints:=Module[{dat,cc=comps,efn=epfn,pfn=oppointsfn},{dat={{cc[[1]],cc[[1]]}};Quiet[While[And[Length[dat]<256,Last[dat][[1]]>=cc[[Length[cc]]]],dat=Append[dat,{(z/.Flatten[FindRoot[efn[z]==Last[dat][[2]],{z,0,1}]]),Last[dat][[2]]}];dat=Append[dat,{Last[dat][[1]],pfn[Last[dat][[1]]]}]]];dat}]; np:=(Length[platepoints[[1]]]-1)/2; platelinegraphics:=Graphics[{Green,Line[platepoints]}]; size=800; baseplot:=Plot[{x},{x,0,1},{PlotRange->All,PlotPoints->1000,PlotStyle->White,Frame->True,FrameLabel->{TableForm[{{"x (mol/mol)"},{}}],TableForm[{{},{"y (mol/mol)"}}],TableForm[{{},{"n-Pentane / n-Heptane System Vapor-Liquid Equilibrium at P = 101.3 kPa"},{TableForm[{Flatten[Append[Append[{TableForm[{{"D =",flows[[1]],"kgmol/hr"},{"xD =",comps[[1]],"mol/mol"},{"W =",flows[[ns]],"kgmol/hr"},{"xW =",comps[[ns]],"mol/mol"}}]},Table[TableForm[{{"F["<>ToString[i-1]<>"] =",flows[[i]],"kgmol/hr"},{"xF["<>ToString[i-1]<>"] =",comps[[i]],"mol/mol"},{"qF["<>ToString[i-1]<>"] =",qvals[[i-1]],""}}],{i,2,ns-1}]],{TableForm[{{"Rmin =",rmin[2,epfn],""},{"R_D =",rd,""},{"Np =",np,"trays"}}]}]]}]}}],TableForm[{{""},{}}]},FrameStyle->White,Background->Black,ImageSize->size}]; eqplot:=ListLinePlot[eqdata,{InterpolationOrder->2,ColorFunction->Function[{x,y},Hue[x+Sin[Pi(x+y)]]]}]; epplot:=ListLinePlot[epdata,{InterpolationOrder->2,ColorFunction->Function[{x,y},Hue[x+Sin[5Pi/2(x+y)]]]}]; complinegraphics:=Graphics[Append[{Dashed,White},Table[compline[i,ns,comps[[i]]],{i,1,ns}]]]; qlinegraphics:=Graphics[Append[{Purple},Table[qline[qvals[[i]],comps[[i]]],{i,1,ns}]]]; oplinegraphics:=Graphics[Append[Append[{White},Table[opline[i,i+1],{i,1,ns-1}]],{Dashed,Yellow,rminline[2,epfn]}]]; Print[TableForm[{{Panel[TableForm[{{TableForm[{{"rmult =",Dynamic[rmult]}}]},{Manipulator[Dynamic[rmult],{1.25,5,0.25}]}}]],Panel[TableForm[{{TableForm[{{"ep =",Dynamic[ep]}}]},{Manipulator[Dynamic[ep],{0.05,1,0.05}]}}]]}}]]; step1display:=Show[{Plot[{x},{x,0,1},{PlotRange->All,PlotPoints->1000,PlotStyle->White,Frame->True,FrameLabel->{TableForm[{{"x (mol/mol)"},{}}],TableForm[{{},{"y (mol/mol)"}}],TableForm[{{},{"n-Pentane / n-Heptane System Vapor-Liquid Equilibrium at P = 101.3 kPa"},{}}],TableForm[{{""},{}}]},FrameStyle->White,Background->Black,ImageSize->size}],eqplot}]; step2display:=Show[{Plot[{x},{x,0,1},{PlotRange->All,PlotPoints->1000,PlotStyle->White,Frame->True,FrameLabel->{TableForm[{{"x (mol/mol)"},{}}],TableForm[{{},{"y (mol/mol)"}}],TableForm[{{},{"n-Pentane / n-Heptane System Vapor-Liquid Equilibrium at P = 101.3 kPa"},{}}],TableForm[{{""},{}}]},FrameStyle->White,Background->Black,ImageSize->size}],eqplot,epplot}]; step3display:=Show[{Plot[{x},{x,0,1},{PlotRange->All,PlotPoints->1000,PlotStyle->White,Frame->True,FrameLabel->{TableForm[{{"x (mol/mol)"},{}}],TableForm[{{},{"y (mol/mol)"}}],TableForm[{{},{"n-Pentane / n-Heptane System Vapor-Liquid Equilibrium at P = 101.3 kPa"},{}}],TableForm[{{""},{}}]},FrameStyle->White,Background->Black,ImageSize->size}],eqplot,epplot,complinegraphics}]; step4display:=Show[{Plot[{x},{x,0,1},{PlotRange->All,PlotPoints->1000,PlotStyle->White,Frame->True,FrameLabel->{TableForm[{{"x (mol/mol)"},{}}],TableForm[{{},{"y (mol/mol)"}}],TableForm[{{},{"n-Pentane / n-Heptane System Vapor-Liquid Equilibrium at P = 101.3 kPa"},{}}],TableForm[{{""},{}}]},FrameStyle->White,Background->Black,ImageSize->size}],eqplot,epplot,complinegraphics,qlinegraphics}]; step5display:=Show[{Plot[{x},{x,0,1},{PlotRange->All,PlotPoints->1000,PlotStyle->White,Frame->True,FrameLabel->{TableForm[{{"x (mol/mol)"},{}}],TableForm[{{},{"y (mol/mol)"}}],TableForm[{{},{"n-Pentane / n-Heptane System Vapor-Liquid Equilibrium at P = 101.3 kPa"},{}}],TableForm[{{""},{}}]},FrameStyle->White,Background->Black,ImageSize->size}],eqplot,epplot,complinegraphics,qlinegraphics,Graphics[{Dashed,Yellow,rminline[2,epfn]}]}]; step6display:=Show[{Plot[{x},{x,0,1},{PlotRange->All,PlotPoints->1000,PlotStyle->White,Frame->True,FrameLabel->{TableForm[{{"x (mol/mol)"},{}}],TableForm[{{},{"y (mol/mol)"}}],TableForm[{{},{"n-Pentane / n-Heptane System Vapor-Liquid Equilibrium at P = 101.3 kPa"},{TableForm[{Flatten[Append[Append[{TableForm[{{"D =",flows[[1]],"kgmol/hr"},{"xD =",comps[[1]],"mol/mol"},{"W =",flows[[ns]],"kgmol/hr"},{"xW =",comps[[ns]],"mol/mol"}}]},Table[TableForm[{{"F["<>ToString[i-1]<>"] =",flows[[i]],"kgmol/hr"},{"xF["<>ToString[i-1]<>"] =",comps[[i]],"mol/mol"},{"qF["<>ToString[i-1]<>"] =",qvals[[i-1]],""}}],{i,2,ns-1}]],{TableForm[{{"Rmin =",rmin[2,epfn],""},{"R_D =",rd,""}}]}]]}]}}],TableForm[{{""},{}}]},FrameStyle->White,Background->Black,ImageSize->size}],eqplot,epplot,complinegraphics,qlinegraphics,oplinegraphics}]; plotsdisplay:=Show[{baseplot,eqplot,epplot,complinegraphics,qlinegraphics,oplinegraphics,platelinegraphics}]; Print[Dynamic[step1display]]; Print[Dynamic[step2display]]; Print[Dynamic[step3display]]; Print[Dynamic[step4display]]; Print[Dynamic[step5display]]; Print[Dynamic[step6display]]; Print[Dynamic[plotsdisplay]]; }]; columnsolver[equilibriumdata,flowrates,compositions,qvalues,efficiency,refluxratiomultiplier]; NotebookSave[EvaluationNotebook[]];}]; |

That’s it for now. The rest of the proof will be posted in chunks of about the same size as this and the complete proof will be assembled in a single post when all of the parts are completed and reviewed. Thank you for reading my work and please do leave a comment to let me know what you think of it.

**Short URL:**http://dlvr.it/18Lt90

### 4 Responses to “Distillation of a Binary Mixture in a Distillation Column of Arbitrary Design, Part 1”

Sorry, the comment form is closed at this time.

[…] This article is part of a series on a specific research project: Part 1 *Note: This article assumes you have rudimentary knowledge of how a simple distillation column […]

[…] This article is part of a series on a specific research project: Part 1, Part 2 *Note: This article assumes you have rudimentary knowledge of how a simple distillation […]

[…] This article is part of a series on a specific research project: Part 1, Part 2, Part 3 *Note: This article assumes you have rudimentary knowledge of how a simple […]

Awesome work!

Do you have anything about distillation design for cyclohexane and n-hexane?