Consider a non-ideal binary mixture composed of acetone and chloroform. This mixture presents a negative azeotrope with a boiling point of 64.48°C and an acetone mole fraction approximately equal to 0.3393.
​
We perform the dynamic simulation of a batch rectification of this mixture. Temperature is plotted versus time for selected values of the initial composition, reflux ratio, and the number of theoretical stages.
​
The still is charged with 1000 kmol of the initial mixture. The vapor rate is assumed constant at 10 kmol/hr. This policy requires the vapor rate out of the reboiler and into the column section to be kept at a constant level throughout by varying the reboiler duty accordingly.
​
The molar hold-up of all stages and the condenser are 5 and 20 kmol, respectively.
​
It is found that (1) the first product to exit the column is a pure component (either chloroform or acetone, depending on the initial composition); (2) if the initial composition is very rich in chloroform (respectively acetone) then this latter component will exit the column first, followed by the binary azeotrope.
​
If the initial composition is equal to the azeotropic composition, then the temperature remains constant at all times and is equal to the boiling point of the azeotrope.
​
In addition, the separation is improved if one chooses large reflux ratios or a large number of theoretical stages. Sloppy separation is obtained otherwise. This is due to the small differences in the boiling points of acetone (≈56°C), chloroform (≈61°C) and the azeotrope (≈64°C).
Total pressure in psia
P=14.696;
van Laar model for activity coefficients - binary interaction parameters and nonrandomness parameters are obtained from Perry’s Chemical Engineers’ Handbook - acetone is component 1 and chloroform is component 2
Clear[xa];​​A12=-0.864;A21=-0.5889;​​Gam1=Exp[A12(A21(1-xa)/(A12xa+A21(1-xa)))^2];Gam2=Exp[A21(A12xa/(A21(1-xa)+A12xa))^2];
Antoine equation
Aa1=6.244412;Ba1=5356.715;Ca1=397.5290;​​Aa2=5.894057;Ba2=5289.385;Ca2=393.075;​​Psat1=693.7E^(Aa1-Ba1/((T)1.8+32+Ca1));​​Psat2=793.6E^(Aa2-Ba2/((T)1.8+32+Ca2));
Computing VLE data
i=0;​​While[i<1001,{xa=i0.001,​​sol=FindRoot[Psat1xaGam1+Psat2(1-xa)Gam2P,{T,55,65}];xe[i]=xa,ye[i]=Psat1xaGam1/P/.sol,​​Te[i]=T/.sol,i++}];​​Tbl1=Table[{xe[i],Te[i]},{i,1,1000}];Tbl2=Table[{ye[i],Te[i]},{i,1,1000}];Tbl3=Table[{xe[i],ye[i]},{i,1,1000}];Tx=Interpolation[Tbl1,InterpolationOrder1];Ty=Interpolation[Tbl2,InterpolationOrder1];xy=Interpolation[Tbl3,InterpolationOrder1];

CASE 1 (chloroform is in excess)

CASE 1 presents a nice separation where one recovers a substantial amount of pure chloroform at high reflux ratio and large number of stages. The final product to exit is the negative azeotrope (i.e., maximum boiling azeotrope) between acetone and chloroform (b.p. 64.48°C).
Initial composition
x0=0.1;
Reflux ratio
RefluxRatio=15;
Number of theoretical stages
Np=15;
Constant boilup rate in kmol/hr
V=10;
Reflux molar flow rate
L=
RefluxRatioV
1+RefluxRatio
;
Distillate molar flow rate
Di=
V
1+RefluxRatio
;
In[]:=
sol=Quiet[NDSolve[Flatten[{D[M1[t],{t,1}]-Di,D[M1[t]
x
1
[t],{t,1}]-Vxy[
x
1
[t]]+L
x
2
[t],​​
x
1
[0]x0,M1[0]1000,Table[{5D[
x
i
[t],{t,1}]-V(xy[
x
i
[t]]-xy[
x
i-1
[t]])+L(
x
i+1
[t]-
x
i
[t]),
x
i
[0]x0},{i,2,Np}],​​20D[
x
Np+1
[t],{t,1}]Vxy[
x
Np
[t]]-(L+Di)
x
Np+1
[t],
x
Np+1
[0]x0}],Flatten[{M1[t],Table[
x
i
[t],{i,1,Np+1}]}],{t,0,999/Di}]];
plt1=PlotTx[
x
Np+1
[t]/.sol],{t,0,999/Di},
;​​Show[plt1,Graphics[{Thick,Darker@Red,Line[{{0,56.0544},{999/Di,56.0544}}],RGBColor[.48,.11,.56],Line[{{0,61.1789},{999/Di,61.1789}}],Darker@Cyan,Line[{{0,64.4871},{999/Di,64.4871}}]}],Graphics[{Darker@Cyan,Text["azeotrope",{140,64.9}],RGBColor[.48,.11,.56],Text["chloroform",{140,61.6}],Darker@Red,Text["acetone",{140,56.6}]}],plt1,ImagePadding35]
Out[]=

CASE 2 (acetone is in excess)

CASE 2 presents a nice separation where one recovers a substantial amount of pure acetone at high reflux ratio and large number of stages. Again, the final product to exit is the negative azeotrope between acetone and chloroform (b.p. 64.48°C).
Initial composition
x0=0.7;
Reflux ratio
RefluxRatio=9;
Number of theoretical stages
Np=15;
Constant boilup rate in kmol/hr
V=10;
Reflux molar flow rate
L=
RefluxRatioV
1+RefluxRatio
;
Distillate molar flow rate
Di=
V
1+RefluxRatio
;
In[]:=
sol=Quiet[NDSolve[Flatten[{D[M1[t],{t,1}]-Di,D[M1[t]
x
1
[t],{t,1}]-Vxy[
x
1
[t]]+L
x
2
[t],​​
x
1
[0]x0,M1[0]1000,Table[{5D[
x
i
[t],{t,1}]-V(xy[
x
i
[t]]-xy[
x
i-1
[t]])+L(
x
i+1
[t]-
x
i
[t]),
x
i
[0]x0},{i,2,Np}],​​20D[
x
Np+1
[t],{t,1}]Vxy[
x
Np
[t]]-(L+Di)
x
Np+1
[t],
x
Np+1
[0]x0}],Flatten[{M1[t],Table[
x
i
[t],{i,1,Np+1}]}],{t,0,999/Di}]];
plt1=PlotTx[
x
Np+1
[t]/.sol],{t,0,999/Di},
;​​Show[plt1,Graphics[{Thick,Darker@Red,Line[{{0,56.0544},{999/Di,56.0544}}],RGBColor[.48,.11,.56],Line[{{0,61.1789},{999/Di,61.1789}}],Darker@Cyan,Line[{{0,64.4871},{999/Di,64.4871}}]}],Graphics[{Darker@Cyan,Text["azeotrope",{100,64.9}],RGBColor[.48,.11,.56],Text["chloroform",{100,61.6}],Darker@Red,Text["acetone",{100,56.6}]}],plt1,ImagePadding35]
Out[]=

CASE 3 (x0=0.3393)

Here, there is only one distillate cut (the negative azeotrope between acetone and chloroform (b.p. 64.48°C)) indicated by the dashed orange line.
Initial composition
x0=0.3393;
Reflux ratio
RefluxRatio=9;
Number of theoretical stages
Np=15;
Constant boilup rate in kmol/hr
V=10;
Reflux molar flow rate
L=
RefluxRatioV
1+RefluxRatio
;
Distillate molar flow rate
Di=
V
1+RefluxRatio
;
In[]:=
sol=Quiet[NDSolve[Flatten[{D[M1[t],{t,1}]-Di,D[M1[t]
x
1
[t],{t,1}]-Vxy[
x
1
[t]]+L
x
2
[t],​​
x
1
[0]x0,M1[0]1000,Table[{5D[
x
i
[t],{t,1}]-V(xy[
x
i
[t]]-xy[
x
i-1
[t]])+L(
x
i+1
[t]-
x
i
[t]),
x
i
[0]x0},{i,2,Np}],​​20D[
x
Np+1
[t],{t,1}]Vxy[
x
Np
[t]]-(L+Di)
x
Np+1
[t],
x
Np+1
[0]x0}],Flatten[{M1[t],Table[
x
i
[t],{i,1,Np+1}]}],{t,0,999/Di}]];
plt1=PlotTx[
x
Np+1
[t]/.sol],{t,0,999/Di},
;​​Show[plt1,Graphics[{Thick,Darker@Red,Line[{{0,56.0544},{999/Di,56.0544}}],RGBColor[.48,.11,.56],Line[{{0,61.1789},{999/Di,61.1789}}],Darker@Cyan,Line[{{0,64.4871},{999/Di,64.4871}}]}],Graphics[{Darker@Cyan,Text["azeotrope",{100,64.9}],RGBColor[.48,.11,.56],Text["chloroform",{100,61.6}],Darker@Red,Text["acetone",{100,56.6}]}],plt1,ImagePadding35]

CITE THIS NOTEBOOK

Batch rectification of an acetone/chloroform binary mixture​
by Housam Binous​
Wolfram Community, STAFF PICKS, April 11, 2026
https://community.wolfram.com/groups/-/m/t/3682521