feedtray.gms : Optimum Feed Plate Location
This model determines the optimum location of feed plates in
a distillation column with 7 ideal stages, a total condenser and
a kettle-type reboiler. The feed consists of a mixture of benzene
and toluene entering at bubble point.
References:
- Morari, M, and Grossmann, I E, Eds, Chemical Engineering Optimization Models with GAMS. Computer Aids for Chemical Engineering Corporation, 1991.
- Viswanathan, J, and Grossmann, I E, A Combined Penalty Function and Outer Approximation Method for MINLP Optimization. Computers and Chemical Engineering 14, 7 (1990), 769-782.
Large Model of Type: MINLP
$Title Optimum feed plate location (FEEDTRAY,SEQ=122)
$Stitle System --- Benzene - Toluene at about 1 bar
$Ontext
This model determines the optimum location of feed plates in
a distillation column with 7 ideal stages, a total condenser and
a kettle-type reboiler. The feed consists of a mixture of benzene
and toluene entering at bubble point.
Morari, M, and Grossmann, I E, Eds, Chemical Engineering Optimization
Models with GAMS. Computer Aids for Chemical Engineering Corporation,
1991.
Vishwanathan, J, and Grossmann, I E, A Combined Penalty Function and
Outer Approximation Method for Mixed Integer Nonlinear Programming.
Computers and Chemical Engineering 14, 7 (1990), 769-782.
Section 1
Basic Data
___________
Basic Thermodynamic Data have been taken from
R.C. Reid, J.M. Prausnitz and B.E. Poling :
" The Properties of gases and liquids "
4th Edition, McGraw-Hill (1987)
Units: Pressure : in bars i.e. 0.1 Mpa
Temperature : in kelvins
Heat capacity : kJ/kmol K
Abbreviations : mm Molar mass
Tb Normal boiling point
Tc Critical temperature
Pc Critical Pressure
$Offtext
Set j components / benzene , toluene /;
Table prcon (j,*) basic physical properties
mm tb tc pc omega liq-den tden
benzene 78.114 353.2 562.2 48.9 0.212 0.885 289
toluene 92.141 383.8 591.8 41.0 0.263 0.867 293
Table vpcon(j,*) constants in the weird equation for vap.pressure
a b c d tmin
benzene -6.98273 1.33213 -2.62863 -3.33399 288
toluene -7.28607 1.38091 -2.83433 -2.79168 309
Table cpcon(j,*) constants for the isobaric heat capacity equation
a b c d
benzene -3.392e+1 4.739e-1 -3.017e-4 7.130e-8
toluene -2.435e+1 5.125e-1 -2.765e-4 4.911e-8
Scalars treb guess temperature for reboiler
tbot guess temperature for bottom-most tray
ttop guess temperature for top-most tray
tcon guess temperature for condenser ;
treb = 380; tbot = 375; ttop = 360; tcon = 355;
Scalar rg universal gas constant /8.314/ ;
Parameters h0(j) integration constant for enthalpy ;
h0(j) = tcon * ( cpcon(j,'a') + tcon * ( cpcon(j,'b')/2
+ tcon*( cpcon(j,'c')/3 + tcon *cpcon(j,'d')/4 ))) ;
$Ontext
section 2
_________
thermal condition of the feed stream
$Offtext
Scalars f total no. of moles of feed
tf temperature of the feed (in kelvins)
pf pressure of the feed stream
vf vapour fraction in feed(before expansion)
shf specific enthalpy of feed
preb pressure in the reboiler
pbot pressure in the bottom-most tray
ptop pressure in the top-most tray
pcon pressure in the condenser ;
f = 100 ; preb = 1.2 ; pbot = 1.12 ; ptop = 1.08; pcon = 1.05;
pf = 1.12 ; vf = 0.0 ;
Parameters xf(j) molefractions in feed-stream
/ benzene 0.70
toluene 0.30 / ;
$Ontext
assume that feed enters at bubble point
determination of bubble temperature
use nlp to solve equation
commented out for convenience
variable tbub, z1 ;
equation bubble , obj1 ;
bubble.. sum ( j, xf(j)* prcon(j,'pc')* exp ( prcon(j,'tc')/tbub *
( vpcon(j,'a') * (1-tbub/prcon(j,'tc') )
+ vpcon(j,'b')*(1-tbub/prcon(j,'tc'))**1.5
+ vpcon(j,'c')*(1-tbub/prcon(j,'tc'))**3
+ vpcon(j,'d')*(1-tbub/prcon(j,'tc'))**6 ) ) / pf ) =e= 1 ;
obj1.. z1 =e= 1;
tbub.lo = prcon('benzene','tb') ;
tbub.up = prcon('toluene','tb') ;
tbub.l = 0.5 *(tbub.lo +tbub.up) ;
Model bubt /all/ ; solve bubt minimizing z1 using nlp ;
$Offtext
*$Ontext
* note : solution of the above step indicates tbub = 363.368
tf = 363.368 ;
shf = sum (j, xf(j) *
( tf * ( cpcon(j,'a') + tf * ( cpcon(j,'b')/2
+ tf*( cpcon(j,'c')/3 + tf *cpcon(j,'d')/4 ))) - h0(j)
+ rg * prcon(j,'tc') *
( vpcon(j,'a') * (1-tf/prcon(j,'tc') )
+ vpcon(j,'b')*(1-tf/prcon(j,'tc'))**1.5
+ vpcon(j,'c')*(1-tf/prcon(j,'tc'))**3
+ vpcon(j,'d')*(1-tf/prcon(j,'tc'))**6 )
+ rg * tf * ( vpcon(j,'a')
+ 1.5 * vpcon(j,'b')*(1-tf/prcon(j,'tc'))**0.5
+ 3 * vpcon(j,'c')*(1-tf/prcon(j,'tc'))**2
+ 6 * vpcon(j,'d')*(1-tf/prcon(j,'tc'))**5 ) ) ) ;
Display shf ;
*$Offtext
$Ontext
section 3
_________
modeling equations
description of the column
note: the stages are numbered bottom upwards (like the
floors of a building). reboiler is stage (tray) no. 1 and the
condenser is the last tray.
$Offtext
Sets i stages /1*9 /
reb(i) reboiler
con(i) condenser
col(i) stages in the col
floc(i) possible locations of feed stage / 2*8 /
abovef(i) stages above the feed stage
belowf(i) feed stage and those below it ;
reb(i) = yes$(ord(i) eq 1) ;
con(i) = yes$(ord(i) eq card(i)) ;
col(i) = yes - (reb(i)+con(i)) ;
Parameter p(i) pressure prevailing in tray i ;
p(i)$reb(i) = preb ;
p(i)$con(i)= pcon ;
p(i)$col(i) =
pbot - ((pbot-ptop)/(card(i)-1-2)) * (ord(i)-2) ;
Scalars
hllo,hlhi,hvlo,hvhi,hscale limits on enthalpies and scaling ;
hllo =
tcon * ( cpcon('benzene','a') + tcon * ( cpcon('benzene','b')/2
+ tcon*( cpcon('benzene','c')/3 + tcon *cpcon('benzene','d')/4 )))
- h0('benzene')
+ rg * prcon('benzene','tc') *
( vpcon('benzene','a') * (1-tcon/prcon('benzene','tc') )
+ vpcon('benzene','b')*(1-tcon/prcon('benzene','tc'))**1.5
+ vpcon('benzene','c')*(1-tcon/prcon('benzene','tc'))**3
+ vpcon('benzene','d')*(1-tcon/prcon('benzene','tc'))**6 )
+ rg * tcon * ( vpcon('benzene','a')
+ 1.5 * vpcon('benzene','b')*(1-tcon/prcon('benzene','tc'))**0.5
+ 3 * vpcon('benzene','c')*(1-tcon/prcon('benzene','tc'))**2
+ 6 * vpcon('benzene','d')*(1-tcon/prcon('benzene','tc'))**5 ) ;
hlhi =
treb * ( cpcon('toluene','a') + treb * ( cpcon('toluene','b')/2
+ treb*( cpcon('toluene','c')/3 + treb *cpcon('toluene','d')/4 )))
- h0('toluene')
+ rg * prcon('toluene','tc') *
( vpcon('toluene','a') * (1-treb/prcon('toluene','tc') )
+ vpcon('toluene','b')*(1-treb/prcon('toluene','tc'))**1.5
+ vpcon('toluene','c')*(1-treb/prcon('toluene','tc'))**3
+ vpcon('toluene','d')*(1-treb/prcon('toluene','tc'))**6 )
+ rg * treb * ( vpcon('toluene','a')
+ 1.5 * vpcon('toluene','b')*(1-treb/prcon('toluene','tc'))**0.5
+ 3 * vpcon('toluene','c')*(1-treb/prcon('toluene','tc'))**2
+ 6 * vpcon('toluene','d')*(1-treb/prcon('toluene','tc'))**5 ) ;
hvlo =
tcon * ( cpcon('benzene','a') + tcon * ( cpcon('benzene','b')/2
+ tcon*( cpcon('benzene','c')/3 + tcon *cpcon('benzene','d')/4 )))
- h0('benzene') ;
hvhi =
treb * ( cpcon('toluene','a') + treb * ( cpcon('toluene','b')/2
+ treb*( cpcon('toluene','c')/3 + treb *cpcon('toluene','d')/4 )))
- h0('toluene') ;
hscale = max( abs(hllo), abs(hlhi), abs(hvlo), abs(hvhi) ) ;
Positive Variables
x(i,j) mole-fraction of j-th component in liquid on i-th tray.
y(i,j) mole-fraction of j-th component in vapour on i-th tray
l(i) molar flow rate of liquid leaving tray i
v(i) molar flow rate of vapour leaving tray i
t(i) temperature of tray i
feed(i) feed stream entering tray i
r reflux ratio
p1 top product rate
p2 bottom product rate ;
Variables
hl(i) molar sp.enthalpy of liquid in tray i.
hv(i) molar sp.enthalpy of vapour in tray i. ;
Equations
phe(i,j) phase equilibrium relation
errk(i) phase equilibrium error function
cmb(i,j) component material balance(1