source: trunk/eml/stage_separators/tank.mso @ 607

Last change on this file since 607 was 353, checked in by Argimiro Resende Secchi, 16 years ago

Fixing some wiki notation.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 6.4 KB
RevLine 
[1]1#*-------------------------------------------------------------------
[72]2* EMSO Model Library (EML) Copyright (C) 2004 - 2007 ALSOC.
3*
4* This LIBRARY is free software; you can distribute it and/or modify
5* it under the therms of the ALSOC FREE LICENSE as available at
6* http://www.enq.ufrgs.br/alsoc.
7*
8* EMSO Copyright (C) 2004 - 2007 ALSOC, original code
9* from http://www.rps.eng.br Copyright (C) 2002-2004.
10* All rights reserved.
11*
12* EMSO is distributed under the therms of the ALSOC LICENSE as
13* available at http://www.enq.ufrgs.br/alsoc.
14*
15*-------------------------------------------------------------------
[1]16* Model of tanks
17*--------------------------------------------------------------------
18*       Streams:
19*               * an inlet stream
20*               * an outlet stream
21*
22*       Specify:
23*               * the Inlet stream
24*               * the Outlet flow
25*               * the tank Q
26*
27*       Initial:
28*               * the tank temperature (OutletL.T)
29*               * the tank level (h)
30*               * (NoComps - 1) Outlet compositions
31*----------------------------------------------------------------------
32* Author: Paula B. Staudt
33* $Id: tank.mso 353 2007-08-30 16:12:27Z arge $
34*--------------------------------------------------------------------*#
35
36using "streams";
37
38Model tank
[270]39        ATTRIBUTES
40        Pallete         = true;
[300]41        Icon            = "icon/Tank";
[270]42        Brief           = "Model of a cylindrical tank.";
43        Info            =
[353]44"== Specify ==
45* the Inlet stream;
46* the outlet flow;
47* the tank Q.
[1]48
[353]49== Initial Conditions ==
50* the tank initial temperature (OutletL.T);
51* the tank initial level (Level);
52* (NoComps - 1) OutletL (OR OutletV) compositions.
53";
[270]54
[1]55        PARAMETERS
[210]56        outer PP as Plugin(Brief = "External Physical Properties", Type="PP");
[125]57        outer NComp as Integer;
[1]58        Across as area (Brief="Tank cross section area", Default=2);
59       
60        VARIABLES
[352]61in      Inlet  as stream (Brief = "Inlet stream", PosX=0.3037, PosY=0, Symbol="_{in}");
62out     Outlet as liquid_stream (Brief = "Outlet liquid stream", PosX=1, PosY=1, Symbol="_{out}");
63in      InletQ as energy_stream (Brief="Rate of heat supply", PosX=1, PosY=0.7859, Symbol="_{in}");
[1]64        Level    as length(Brief="Tank level");
65        M(NComp) as mol (Brief="Molar Holdup in the tank");
66        E as energy (Brief="Total Energy Holdup on tank");
67        vL as volume_mol (Brief="Liquid Molar Volume");
68
69        EQUATIONS
70        "Mass balance"
71        diff(M) = Inlet.F*Inlet.z - Outlet.F*Outlet.z;
72       
73        "Energy balance"
[310]74        diff(E) = Inlet.F*Inlet.h - Outlet.F*Outlet.h + InletQ.Q;
[1]75
76        "Energy Holdup"
77        E = sum(M)*Outlet.h;
78
79        "Mechanical Equilibrium"
80        Inlet.P = Outlet.P;
81       
82        "Liquid Volume"
83        vL = PP.LiquidVolume(Outlet.T, Outlet.P, Outlet.z);
84       
85        "Composition"
86        M = Outlet.z*sum(M);
87       
88        "Level of liquid phase"
89        Level = sum(M)*vL/Across;
90end
91
[72]92#*----------------------------------------------------------
93*
94*Model of a tank with a lain cylinder geometry
95*
96*---------------------------------------------------------*#
[1]97Model tank_cylindrical
[270]98        ATTRIBUTES
99        Pallete         = true;
[300]100        Icon            = "icon/TankHorizontal";
[270]101        Brief           = "Model of a tank with a lain cylinder geometry.";
102        Info            =
[353]103"== Specify ==
104* the Inlet stream;
105* the outlet flow;
106* the tank Q.
[1]107
[353]108== Initial Conditions ==
109* the tank initial temperature (OutletL.T);
110* the tank initial level (Level);
111* (NoComps - 1) OutletL (OR OutletV) compositions.
112";
[270]113       
[1]114        PARAMETERS
[210]115        outer PP as Plugin(Brief = "External Physical Properties", Type="PP");
[125]116        outer NComp as Integer;
[1]117        radius as length(Brief="Tank radius");
118        L as length(Brief="Tank length");
119       
120        VARIABLES
[352]121in      Inlet  as stream (Brief = "Inlet stream", PosX=0.1825, PosY=0, Symbol="_{in}");
122out     Outlet as liquid_stream (Brief = "Outlet liquid stream", PosX=1, PosY=1, Symbol="_{out}");
123in      InletQ as energy_stream (Brief="Rate of heat supply", PosX=1, PosY=0.6160, Symbol="_{in}");
[1]124        Level    as length(Brief="Tank level");
125        Across as area (Brief="Tank cross section area", Default=2);
126        M(NComp) as mol (Brief="Molar Holdup in the tank");
127        E as energy (Brief="Total Energy Holdup on tank");
128        vL as volume_mol (Brief="Liquid Molar Volume");
129
130        EQUATIONS
131        "Mass balance"
132        diff(M) = Inlet.F*Inlet.z - Outlet.F*Outlet.z;
133       
134        "Energy balance"
[310]135        diff(E) = Inlet.F*Inlet.h - Outlet.F*Outlet.h + InletQ.Q;
[1]136
137        "Energy Holdup"
138        E = sum(M)*Outlet.h;
139       
140        "Mechanical Equilibrium"
141        Inlet.P = Outlet.P;
142       
143        "Liquid Volume"
144        vL = PP.LiquidVolume(Outlet.T, Outlet.P, Outlet.z);
145       
146        "Composition"
147        M = Outlet.z*sum(M);
148       
149        "Cylindrical Area"
150        Across = radius^2 * (asin(1) - asin((radius-Level)/radius) ) +
151                                (Level-radius)*sqrt(Level*(2*radius - Level));
152
153        "Level of liquid phase"
[183]154        L*Across = sum(M)*vL;
[1]155end
156
157Model tank_simplified
[313]158        ATTRIBUTES
159        Pallete         = true;
160        Icon            = "icon/Tank";
161        Brief           = "Model of a simplified tank.";
162        Info            =
[353]163"== Specify ==
164* the Inlet flow rate;
[313]165
[353]166== Initial Conditions ==
167* the tank initial level (Level);
168";
[313]169
[1]170        PARAMETERS
[174]171        k as Real (Brief="Valve Constant", Unit = 'm^2.5/h', Default=4);
[1]172        A as area (Brief="Tank area", Default=2);
173
174        VARIABLES
[313]175        Level as length(Brief="Tank level");
[325]176in      Fin  as flow_vol(Brief="Input flow", PosX=0.3037, PosY=0);
177out     Fout as flow_vol(Brief="Output flow", PosX=1, PosY=1);
[1]178
179        EQUATIONS
180        "Mass balance"
[313]181        diff(A*Level) = Fin - Fout;
182
[1]183        "Valve equation"
[313]184        Fout = k*sqrt(Level);           
[1]185end
[64]186
187Model tank_feed
[313]188        ATTRIBUTES
189        Pallete         = true;
190        Icon            = "icon/Tank";
191        Brief           = "Model of a tank with feed stream.";
192        Info            =
[353]193"== Specify ==
194* the Inlet stream;
195* the Feed stream;
196* the outlet flow;
197* the tank Q.
[64]198
[353]199== Initial Conditions ==
200* the tank initial temperature (OutletL.T);
201* the tank initial level (Level);
202* (NoComps - 1) OutletL (OR OutletV) compositions.
203";
[313]204
[64]205        PARAMETERS
[210]206        outer PP as Plugin(Brief = "External Physical Properties", Type="PP");
[125]207        outer NComp as Integer;
[64]208        Across as area (Brief="Tank cross section area", Default=2);
209       
210        VARIABLES
[352]211in      Feed as stream (Brief = "Feed stream", PosX=0.32, PosY=0, Symbol="_{feed}");   
212in      Inlet  as stream (Brief = "Inlet stream", PosX=0.3037, PosY=0, Symbol="_{in}");
213out     Outlet as liquid_stream (Brief = "Outlet liquid stream", PosX=1, PosY=1, Symbol="_{out}");
214in      InletQ as energy_stream (Brief="Rate of heat supply", PosX=1, PosY=0.7859, Symbol="_{in}");
[64]215
216        Level    as length(Brief="Tank level");
217        M(NComp) as mol (Brief="Molar Holdup in the tank");
218        E as energy (Brief="Total Energy Holdup on tank");
219        vL as volume_mol (Brief="Liquid Molar Volume");
220
221        EQUATIONS
222        "Mass balance"
223        diff(M) = Feed.F*Feed.z + Inlet.F*Inlet.z - Outlet.F*Outlet.z;
224       
225        "Energy balance"
[310]226        diff(E) = Feed.F*Feed.h + Inlet.F*Inlet.h - Outlet.F*Outlet.h + InletQ.Q;
[64]227
228        "Energy Holdup"
229        E = sum(M)*Outlet.h;
230
231        "Mechanical Equilibrium"
232        Inlet.P = Outlet.P;
233       
234        "Liquid Volume"
235        vL = PP.LiquidVolume(Outlet.T, Outlet.P, Outlet.z);
236       
237        "Composition"
238        M = Outlet.z*sum(M);
239       
240        "Level of liquid phase"
241        Level = sum(M)*vL/Across;
242end
Note: See TracBrowser for help on using the repository browser.