#*-------------------------------------------------------------------
* Model of a tray
*--------------------------------------------------------------------
* - Streams
* * a liquid outlet stream
* * a liquid inlet stream
* * a vapour outlet stream
* * a vapour inlet stream
* * a feed stream
*
* - Assumptions
* * both phases (liquid and vapour) exists all the time
* * thermodymanic equilibrium (Murphree plate efficiency=1)
* * no entrainment of liquid or vapour phase
* * no weeping
* * the dymanics in the downcomer are neglected
*
* - Tray hydraulics: Roffel B.,Betlem B.H.L.,Ruijter J.A.F. (2000)
* Computers and Chemical Engineering and
* The gPROMS Model Library
*
* Specify:
* * the Feed stream
* * the Liquid inlet stream
* * the Vapour inlet stream excluding its flow
* * the Vapour outlet flow (Outlet.F)
*
* Initial:
* * the plate temperature (OutletL.T)
* * the liquid height (hl)
* * (NoComps - 1) OutletL (or OutletV) compositions
*
*----------------------------------------------------------------------
* Author: Paula B. Staudt
* $Id: tray.mso 38 2006-10-23 20:26:39Z paula $
*--------------------------------------------------------------------*#
using "streams";
Model trayBasic
PARAMETERS
ext PP as CalcObject;
ext NComp as Integer;
V as volume(Brief="Total Volume of the tray");
Q as heat_rate (Brief="Rate of heat supply");
Ap as area (Brief="Plate area = Atray - Adowncomer");
VARIABLES
in Inlet as stream;
in InletL as stream;
in InletV as stream;
out OutletL as stream_therm;
out OutletV as stream_therm;
M(NComp) as mol (Brief="Molar Holdup in the tray");
ML as mol (Brief="Molar liquid holdup");
MV as mol (Brief="Molar vapour holdup");
E as energy (Brief="Total Energy Holdup on tray");
vL as volume_mol (Brief="Liquid Molar Volume");
vV as volume_mol (Brief="Vapour Molar volume");
Level as length (Brief="Height of clear liquid on plate");
yideal(NComp) as fraction;
Emv as Real (Brief = "Murphree efficiency");
EQUATIONS
"Component Molar Balance"
diff(M)=Inlet.F*Inlet.z + InletL.F*InletL.z + InletV.F*InletV.z
- OutletL.F*OutletL.z - OutletV.F*OutletV.z;
"Energy Balance"
diff(E) = ( Inlet.F*Inlet.h + InletL.F*InletL.h + InletV.F*InletV.h
- OutletL.F*OutletL.h - OutletV.F*OutletV.h + Q );
"Molar Holdup"
M = ML*OutletL.z + MV*OutletV.z;
"Energy Holdup"
E = ML*OutletL.h + MV*OutletV.h - OutletL.P*V;
"Mol fraction normalisation"
sum(OutletL.z)= 1.0;
sum(OutletL.z)= sum(OutletV.z);
"Liquid Volume"
vL = PP.LiquidVolume(OutletL.T, OutletL.P, OutletL.z);
"Vapour Volume"
vV = PP.VapourVolume(OutletV.T, OutletV.P, OutletV.z);
"Chemical Equilibrium"
PP.LiquidFugacityCoefficient(OutletL.T, OutletL.P, OutletL.z)*OutletL.z =
PP.VapourFugacityCoefficient(OutletV.T, OutletV.P, OutletV.z)*yideal;
"Murphree Efficiency"
OutletV.z = Emv * (yideal - InletV.z) + InletV.z;
"Thermal Equilibrium"
OutletV.T = OutletL.T;
"Mechanical Equilibrium"
OutletV.P = OutletL.P;
"Geometry Constraint"
V = ML* vL + MV*vV;
"vaporization fraction "
OutletV.v = 1.0;
OutletL.v = 0.0;
"Level of clear liquid over the weir"
Level = ML*vL/Ap;
end
Model tray as trayBasic
PARAMETERS
Ah as area (Brief="Total holes area");
lw as length (Brief="Weir length");
g as acceleration (Default=9.81);
hw as length (Brief="Weir height");
beta as fraction (Brief="Aeration fraction");
alfa as fraction (Brief="Dry pressure drop coefficient");
VARIABLES
rhoL as dens_mass;
rhoV as dens_mass;
EQUATIONS
"Liquid Density"
rhoL = PP.LiquidDensity(OutletL.T, OutletL.P, OutletL.z);
"Vapour Density"
rhoV = PP.VapourDensity(InletV.T, InletV.P, InletV.z);
if (Level > (beta * hw)) then
"Francis Equation"
OutletL.F = 1.84*"m^0.5/s"*lw*((Level-(beta*hw))/(beta))^1.5/vL;
else
"Low level"
OutletL.F = 0 * "mol/h";
end
end
#*-------------------------------------------------------------------
* Model of a tray with reaction
*-------------------------------------------------------------------*#
Model trayReact
PARAMETERS
ext PP as CalcObject;
ext NComp as Integer;
V as volume(Brief="Total Volume of the tray");
Q as power (Brief="Rate of heat supply");
Ap as area (Brief="Plate area = Atray - Adowncomer");
Ah as area (Brief="Total holes area");
lw as length (Brief="Weir length");
g as acceleration (Default=9.81);
hw as length (Brief="Weir height");
beta as fraction (Brief="Aeration fraction");
alfa as fraction (Brief="Dry pressure drop coefficient");
stoic(NComp) as Real(Brief="Stoichiometric matrix");
Hr as energy_mol;
Pstartup as pressure;
VARIABLES
in Inlet as stream;
in InletL as stream;
in InletV as stream;
out OutletL as stream_therm;
out OutletV as stream_therm;
yideal(NComp) as fraction;
Emv as Real (Brief = "Murphree efficiency");
M(NComp) as mol (Brief="Molar Holdup in the tray");
ML as mol (Brief="Molar liquid holdup");
MV as mol (Brief="Molar vapour holdup");
E as energy (Brief="Total Energy Holdup on tray");
vL as volume_mol (Brief="Liquid Molar Volume");
vV as volume_mol (Brief="Vapour Molar volume");
Level as length (Brief="Height of clear liquid on plate");
Vol as volume;
rhoL as dens_mass;
rhoV as dens_mass;
r as reaction_mol (Brief = "Reaction rate", Unit = "mol/l/s");
C(NComp) as conc_mol (Brief = "Molar concentration", Lower = -1); #, Unit = "mol/l");
EQUATIONS
"Molar Concentration"
OutletL.z = vL * C;
"Component Molar Balance"
diff(M)=Inlet.F*Inlet.z + InletL.F*InletL.z + InletV.F*InletV.z
- OutletL.F*OutletL.z - OutletV.F*OutletV.z + stoic*r*ML*vL;
"Energy Balance"
diff(E) = ( Inlet.F*Inlet.h + InletL.F*InletL.h + InletV.F*InletV.h
- OutletL.F*OutletL.h - OutletV.F*OutletV.h + Q ) + Hr * r * vL*ML;
"Molar Holdup"
M = ML*OutletL.z + MV*OutletV.z;
"Energy Holdup"
E = ML*OutletL.h + MV*OutletV.h - OutletL.P*V;
"Mol fraction normalisation"
sum(OutletL.z)= 1.0;
"Liquid Volume"
vL = PP.LiquidVolume(OutletL.T, OutletL.P, OutletL.z);
"Vapour Volume"
vV = PP.VapourVolume(OutletV.T, OutletV.P, OutletV.z);
"Thermal Equilibrium"
OutletV.T = OutletL.T;
"Mechanical Equilibrium"
OutletV.P = OutletL.P;
"vaporization fraction "
OutletV.v = 1.0;
OutletL.v = 0.0;
"Level of clear liquid over the weir"
Level = ML*vL/Ap;
Vol = ML*vL;
"Liquid Density"
rhoL = PP.LiquidDensity(OutletL.T, OutletL.P, OutletL.z);
"Vapour Density"
rhoV = PP.VapourDensity(InletV.T, InletV.P, InletV.z);
if (Level > (beta * hw)) then
"Francis Equation"
OutletL.F = (1.84*"m^0.5/s"*lw*((Level-(beta*hw))/(beta))^1.5/vL);
else
"Low level"
OutletL.F = 0 * "mol/h";
end
"Pressure Drop through the tray"
OutletV.F = (1 + tanh(1 * (OutletV.P - Pstartup)/"Pa"))/2 *
Ah/vV * sqrt(2*(OutletV.P - InletL.P + 1e-8 * "atm") / (alfa*rhoV) );
"Chemical Equilibrium"
PP.LiquidFugacityCoefficient(OutletL.T, OutletL.P, OutletL.z)*OutletL.z =
PP.VapourFugacityCoefficient(OutletV.T, OutletV.P, OutletV.z)*yideal;
OutletV.z = Emv * (yideal - InletV.z) + InletV.z;
sum(OutletL.z)= sum(OutletV.z);
"Geometry Constraint"
V = ML* vL + MV*vV;
end