Consider an ideal quaternary mixture subject to an equilibrium-limited chemical reaction
A+B⇌C+D
. The relative volatilities are taken as
α
AD
=4
,
α
BD
=3
,
α
CD
=7
, and
α
DD
=1
. The products
C
and
D
appear as the highest and lowest boiling point components of this quaternary mixture. An equimolar mixture of
A
and
B
is initially fed to a reactive rectifier. For simplicity, assume that the reaction takes place only in the still. This notebook plots the distillate and still compositions versus time for two values of the Damköhler number
Da
(see parameter
u=Da/(1+Da)
, which varies between 0 and 1. We take the reflux ratio
R=10
, the equilibrium constant
K
eq
=1 (used in the rate expression as follows:
r=k
C
A
C
B
-
C
C
C
D

K
eq

), and the number of nonreactive stages in the rectifier
N=13
. Compositions of components
A
,
B
,
C
, and
D
are plotted in red, blue, green, and magenta, respectively.
It is clear from the last plot that when
Da
is high, one gets pure
C
and pure
D
and a minor intermediate fraction containing mainly unreacted
A
and
B
. Thus it is possible to drive the reaction conversion to very high values to recover the pure products, components
C
and
D
. One can try a situation where
Da=0
and no products are formed. As expected, increasing
K
eq
favors more production of
C
and
D
. The conversions achieved by combining separation and reaction in one unit operation are far superior to the equilibrium value achieved without separation. These two conversions are reported as percentages in the still and distillate composition plots.
In[]:=
​​V=1;F=1000;HP=1;HD=2;xA0=0.5;​​a14=4;a24=3;a34=7;​​​​Ntot=15;​​R=10;​​Keq=1;​​​​Da=u/(1-u);​​Dif=V/(R+1);​​L=V-Dif;
In[]:=
(*compositionofDandvapour-liquidequilibrium(constantrelativevolatilities)*)​​x4[i_][t_]:=1-x1[i][t]-x2[i][t]-x3[i][t];​​den[i_][t_]:=a14x1[i][t]+a24x2[i][t]+a34x3[i][t]+x4[i][t];​​y1[i_][t_]:=a14x1[i][t]/den[i][t];​​y2[i_][t_]:=a24x2[i][t]/den[i][t];​​y3[i_][t_]:=a34x3[i][t]/den[i][t];​​rate[i_][t_]:=x1[i][t]x2[i][t]-x3[i][t]x4[i][t]/Keq;​​​​xs={x1,x2,x3};​​ys={y1,y2,y3};​​sgn={-1,-1,+1};(*AandBconsumed,Cproduced*)​​
In[]:=
(*traysi=2..Ntot-1*)​​trays=Flatten@Table[​​HPD[xs[[k]][i][t],t]==​​L(xs[[k]][i-1][t]-xs[[k]][i][t])+​​V(ys[[k]][i+1][t]-ys[[k]][i][t]),​​{k,3},{i,2,Ntot-1}];​​​​(*condenser,stage1*)​​cond=Table[​​HDD[xs[[k]][1][t],t]==​​Vys[[k]][2][t]-(L+Dif)xs[[k]][1][t],​​{k,3}];​​​​(*still,stageNtot,withreaction*)​​(*reactionrateproportionaltostillholdup*)still=Table[D[M1[t]xs[[k]][Ntot][t],t]==-Vys[[k]][Ntot][t]+Lxs[[k]][Ntot-1][t]+sgn[[k]]DaL(M1[t]/F)rate[Ntot][t],{k,3}];​​​​eqM=D[M1[t],t]==-Dif;​​​​init=Join[​​Flatten@Table[xs[[k]][i][0]=={xA0,xA0,0}[[k]],{k,3},{i,Ntot}],​​{M1[0]==F}];​​​​funct=Append[Flatten@Table[xs[[k]][i][t],{k,3},{i,Ntot}],M1[t]];​​​​(*M1reaches0att=F/Dif,wherethebalancesbecomesingular:stopslightlybefore*)​​tEnd=0.98F/Dif;
Case 1 : Damköhler number
Da
=1 (i.e.,
u=Da/(1+Da)=0.5
)
In[]:=
u=0.5;
In[]:=
sol=Quiet@NDSolve[​​Join[trays,cond,still,{eqM},init],funct,{t,0,tEnd},​​Method->{"EquationSimplification"->"Residual"},​​AccuracyGoal->5];
In[]:=
​​(*Aconsumedbyreaction(integralofthestillreactionterm)divided​​bytheAinitiallypresentinstill,traysandcondenser*)​​​​consumed=NIntegrate[Evaluate[DaL(M1[t]/F)rate[Ntot][t]/.sol],{t,0,tEnd}];​​C0=xA0(F+(Ntot-2)HP+HD);​​conv=100consumed/C0;​​
In[]:=
(*equilibriumconversionofAforanequimolarA/Bfeed:​​Keq=xi^2/(0.5-xi)^2⇒conversion=2xi/1=s/(1+s)withs=Sqrt[Keq]*)​​​​s=Sqrt[Keq];​​eqConv=100s/(1+s);​​
In[]:=
stageplot=Ntot;(*still*)
In[]:=
p1=Plot[​​Evaluate[{x1[stageplot][t],x2[stageplot][t],x3[stageplot][t],x4[stageplot][t]}/.sol],​​{t,0,tEnd},​​PlotRange->All,Frame->True,GridLines->Automatic,​​AspectRatio->1,ImageSize->350{1,1},​​FrameLabel->{Style["time",16],Style["still composition",16]},​​PlotStyle->{{Red,Thick},{Blue,Thick},​​{Darker@Green,Thick},{Darker@Magenta,Thick}},​​PlotLabel->Row[{​​Style["conversion:",14,Black]," ",​​Style[Row[{"reactive rectifier: ",NumberForm[First@conv,{3,2}],"%"}],14,Red],​​" ",​​Style[Row[{"equilibrium: ",NumberForm[eqConv,{3,2}],"%"}],14,Blue]}]]​​
Out[]=
In[]:=
stageplot=1;(*distillatestream*)
In[]:=
p2=Plot[​​Evaluate[{x1[stageplot][t],x2[stageplot][t],x3[stageplot][t],x4[stageplot][t]}/.sol],​​{t,0,tEnd},​​PlotRange->All,Frame->True,GridLines->Automatic,​​AspectRatio->1,ImageSize->350{1,1},​​FrameLabel->{Style["time",16],Style["distillate composition",16]},​​PlotStyle->{{Red,Thick},{Blue,Thick},​​{Darker@Green,Thick},{Darker@Magenta,Thick}},​​PlotLabel->Row[{​​Style["conversion:",14,Black]," ",​​Style[Row[{"reactive rectifier: ",NumberForm[First@conv,{3,2}],"%"}],14,Red],​​" ",​​Style[Row[{"equilibrium: ",NumberForm[eqConv,{3,2}],"%"}],14,Blue]}]]