#*-------------------------------------------------------------------
* EMSO Model Library (EML) Copyright (C) 2004 - 2007 ALSOC.
*
* This LIBRARY is free software; you can distribute it and/or modify
* it under the therms of the ALSOC FREE LICENSE as available at
* http://www.enq.ufrgs.br/alsoc.
*
* EMSO Copyright (C) 2004 - 2007 ALSOC, original code
* from http://www.rps.eng.br Copyright (C) 2002-2004.
* All rights reserved.
*
* EMSO is distributed under the therms of the ALSOC LICENSE as
* available at http://www.enq.ufrgs.br/alsoc.
*
*----------------------------------------------------------------------
* Author: Rafael de Pelegrini Soares
* $Id: sample_methanol.mso 182 2007-03-06 00:02:04Z rafael $
*--------------------------------------------------------------------*#
FLOWRATE as Real(Default=500, Lower=0, Upper=100000);#,Unit="kmol/h");
EXTENT as Real(Default=500, Lower=-1000000, Upper=1000000);
MOLEFRACTION as Real(Default=0.2, Lower=0, Upper=1);
PRESSURE as Real(Default=10, Lower=0, Upper=1000); #,Unit="bar");
Model MESEPARATOR
PARAMETERS
outer NoComp;
VARIABLES
in FLOWIN(NoComp) as FLOWRATE;
out FLOWOUT1(NoComp) as FLOWRATE;
out FLOWOUT2(NoComp) as FLOWRATE;
TOTAL1 as FLOWRATE;
TOTAL2 as FLOWRATE;
X3 as MOLEFRACTION; X4 as MOLEFRACTION;
Y3 as MOLEFRACTION; Y4 as MOLEFRACTION;
EQUATIONS
"Balanco Global"
FLOWOUT1 + FLOWOUT2 = FLOWIN;
"Total flows"
TOTAL1 = sum (FLOWOUT1);
TOTAL2 = sum (FLOWOUT2);
"Fracoes molares"
X3 * TOTAL1 = FLOWOUT1(3);
X4 * TOTAL1 = FLOWOUT1(4);
Y3 * TOTAL2 = FLOWOUT2(3);
Y4 * TOTAL2 = FLOWOUT2(4);
"Equilibrium fraction"
Y3 = 3.8E-3 * X3;
Y4 = 8.0E-4 * X4;
FLOWOUT1([1,2,5,6,7]) = 0;
end
Model FEEDERMB # Feed stream definition (material balance only)
PARAMETERS
outer NoComp;
VARIABLES
out FLOWOUT(NoComp) as FLOWRATE;
X(NoComp) as MOLEFRACTION;
TOTAL as FLOWRATE;
EQUATIONS
# Total feed flow
TOTAL = sum (FLOWOUT);
# Material fractions of feed stream
X * TOTAL = FLOWOUT;
end
Model MEREACTOR
PARAMETERS
outer NoComp;
Temp as Real(Default=500, Lower=300);
Pressure as Real(Default=100);
VARIABLES
in FLOWIN(NoComp) as FLOWRATE;
out FLOWOUT(NoComp) as FLOWRATE;
TOTAL as FLOWRATE;
EXTENT1 as EXTENT;
EXTENT2 as EXTENT;
X(NoComp) as MOLEFRACTION;
KJ1 as Real(Default=0.6);
KJ2 as Real(Default=1);
KX1; KX2; KP10;
KP20;
EQUATIONS
# Definition of equilibrium constants
KJ1 = 0.6 + 1.5E-3 * (Temp - 473);
KP10 = 10.0^(9.218 + 3971/Temp - 7.492 * log(Temp)
+ 1.77E-3 * Temp - 3.11E-8 * Temp^2);
KX1 = KP10/KJ1 * Pressure^2;
KJ2 = 0.89 + 4.0E-4 * (Temp-463);
KP20 = 10.0^(1.664 - 1850/(Temp+10));
KX2 = KP20/KJ2;
# Outlet flows from extent and stoichiometry
FLOWOUT(1) = FLOWIN(1) - EXTENT1 + EXTENT2;
FLOWOUT(2) = FLOWIN(2) - 2 * EXTENT1 - EXTENT2;
FLOWOUT(3) = FLOWIN(3) + EXTENT1;
FLOWOUT(4) = FLOWIN(4) + EXTENT2;
FLOWOUT(5) = FLOWIN(5) - EXTENT2;
FLOWOUT(6) = FLOWIN(6);
FLOWOUT(7) = FLOWIN(7);
# Total outlet flow
TOTAL = sum (FLOWOUT);
# Mole fractions
TOTAL * X = FLOWOUT;
# Reaction equilibria
X(3) = X(1) * X(2)^2 * KX1;
X(1) * X(4) = X(5) * X(2) * KX2;
end
Model SPLITMB # TWO Stream SPLITTER (MATERIAL BALANCE ONLY)
PARAMETERS
outer NoComp;
VARIABLES
out FLOWOUT2(NoComp) as FLOWRATE;
in FLOWIN(NoComp) as FLOWRATE;
out FLOWOUT1(NoComp) as FLOWRATE;
TOTAL1 as FLOWRATE;
TOTAL2 as FLOWRATE;
X1(NoComp) as MOLEFRACTION;
X2(NoComp) as MOLEFRACTION;
FRACTION as MOLEFRACTION;
EQUATIONS
# Stream split
FLOWOUT1 = FLOWIN * FRACTION;
# Component material balance
FLOWIN = FLOWOUT1 + FLOWOUT2;
# Total flows of output streams
TOTAL1 = sum (FLOWOUT1);
TOTAL2 = sum (FLOWOUT2);
# Material fractions of output streams
X1 * TOTAL1 = FLOWOUT1;
X2 * TOTAL2 = FLOWOUT2;
end
Model MAKEUPMB # MIXER of TWO StreamS (MATERIAL BALANCE ONLY)
PARAMETERS
outer NoComp;
VARIABLES
out FLOWOUT(NoComp) as FLOWRATE;
in FLOWIN1(NoComp) as FLOWRATE;
in FLOWIN2(NoComp) as FLOWRATE;
TOTAL as FLOWRATE;
TOTALMAKE as FLOWRATE;
TOTALR as FLOWRATE;
X(NoComp) as MOLEFRACTION;
RATIO as Real(Default=1e-3);
EQUATIONS
# Component material balances
FLOWIN1 + FLOWIN2 = FLOWOUT;
# Total flow of output stream
TOTAL = sum (FLOWOUT);
# Material fractions of output stream
X * TOTAL = FLOWOUT;
# Specification of recycle ratio
TOTALMAKE = sum (FLOWIN1);
TOTALR = sum (FLOWIN2);
TOTALR = RATIO * TOTALMAKE;
end
FlowSheet MethanolProcess
PARAMETERS
NoComp as Integer(Brief="Number of Components");
DEVICES
Mixer as MAKEUPMB;
Feeder as FEEDERMB;
Reactor as MEREACTOR;
Purge as SPLITMB;
Separator as MESEPARATOR;
CONNECTIONS
Feeder.FLOWOUT to Mixer.FLOWIN1;
Mixer.FLOWOUT to Reactor.FLOWIN;
Reactor.FLOWOUT to Separator.FLOWIN;
Separator.FLOWOUT2 to Purge.FLOWIN;
Purge.FLOWOUT2 to Mixer.FLOWIN2;
SPECIFY
Feeder.TOTAL = 6000;
Feeder.X(2:NoComp) = [0.146, 0.720, 0, 0.001, 0.06, 0.032];
Purge.FRACTION = 0.08776;
SET
NoComp = 7;
Reactor.Temp = 533.15;
Reactor.Pressure = 120;
OPTIONS
Dynamic = false;
end