source: mso/eml/heat_exchangers/HeatExchangerSimplified.mso @ 1

Last change on this file since 1 was 1, checked in by Rafael de Pelegrini Soares, 16 years ago

Initial import of the library

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 15.3 KB
Line 
1 #*--------------------------------------------------------------------*
2*
3*
4*
5*
6*
7*
8*               
9*                                               
10*
11*
12*----------------------------------------------------------------------
13* Author: Gerson Balbueno Bicca
14* $Id: HeatExchangerSimplified.mso 1 2006-06-20 17:33:53Z rafael $
15*--------------------------------------------------------------------*#
16
17using "HEX_Engine";
18
19#=====================================================================
20#       Basic Models for Simplified Heat Exchangers
21#=====================================================================
22
23Model HeatExchangerSimplified_Basic
24
25PARAMETERS
26
27ext PP      as CalcObject(Brief="External Physical Properties");
28ext HE      as CalcObject(Brief="STHE Calculations",File="heatex.dll");
29ext NComp   as Integer   (Brief="Number of Components");
30  M(NComp)  as molweight (Brief="Component Mol Weight");
31       
32VARIABLES
33
34in  Inlet               as Inlet_Main_Stream;   # Hot and Cold Inlets
35out Outlet              as Outlet_Main_Stream;  # Hot and Cold Outlets
36        Properties      as Main_Properties;             # Hot and Cold Properties
37        Details         as Details_Main;
38        PressureDrop    as Main_Pdrop;
39
40SET
41
42M   = PP.MolecularWeight();
43
44EQUATIONS
45
46"Hot Stream Average Temperature"
47        Properties.Hot.Average.T = 0.5*Inlet.Hot.T + 0.5*Outlet.Hot.T;
48       
49"Cold Stream Average Temperature"
50        Properties.Cold.Average.T = 0.5*Inlet.Cold.T + 0.5*Outlet.Cold.T;
51       
52"Hot Stream Average Pressure"
53        Properties.Hot.Average.P = 0.5*Inlet.Hot.P+0.5*Outlet.Hot.P;
54       
55"Cold Stream Average Pressure"
56        Properties.Cold.Average.P = 0.5*Inlet.Cold.P+0.5*Outlet.Cold.P;
57
58"Cold Stream Wall Temperature"
59        Properties.Cold.Wall.Twall =   0.5*Properties.Hot.Average.T + 0.5*Properties.Cold.Average.T;
60
61"Hot Stream Wall Temperature"
62        Properties.Hot.Wall.Twall =   0.5*Properties.Hot.Average.T + 0.5*Properties.Cold.Average.T;
63
64"Hot Stream Average Molecular Weight"
65        Properties.Hot.Average.Mw = sum(M*Inlet.Hot.z);
66
67"Cold Stream Average Molecular Weight"
68        Properties.Cold.Average.Mw = sum(M*Inlet.Cold.z);
69
70
71
72if Inlet.Cold.v equal 0
73       
74        then   
75       
76"Heat Capacity Cold Stream"
77        Properties.Cold.Average.Cp      =       PP.LiquidCp(Properties.Cold.Average.T,Properties.Cold.Average.P,Inlet.Cold.z);
78        Properties.Cold.Inlet.Cp        =       PP.LiquidCp(Inlet.Cold.T,Inlet.Cold.P,Inlet.Cold.z);
79        Properties.Cold.Outlet.Cp       =       PP.LiquidCp(Outlet.Cold.T,Outlet.Cold.P,Outlet.Cold.z);
80
81"Mass Density Cold Stream"
82        Properties.Cold.Average.rho     =       PP.LiquidDensity(Properties.Cold.Average.T,Properties.Cold.Average.P,Inlet.Cold.z);
83        Properties.Cold.Inlet.rho       =       PP.LiquidDensity(Inlet.Cold.T,Inlet.Cold.P,Inlet.Cold.z);
84        Properties.Cold.Outlet.rho      =       PP.LiquidDensity(Outlet.Cold.T,Outlet.Cold.P,Outlet.Cold.z);
85
86"Viscosity Cold Stream"
87        Properties.Cold.Average.Mu =    PP.LiquidViscosity(Properties.Cold.Average.T,Properties.Cold.Average.P,Inlet.Cold.z);
88        Properties.Cold.Inlet.Mu =              PP.LiquidViscosity(Inlet.Cold.T,Inlet.Cold.P,Inlet.Cold.z);
89        Properties.Cold.Outlet.Mu =     PP.LiquidViscosity(Outlet.Cold.T,Outlet.Cold.P,Outlet.Cold.z);
90
91"Conductivity Cold Stream"
92        Properties.Cold.Average.K =     PP.LiquidThermalConductivity(Properties.Cold.Average.T,Properties.Cold.Average.P,Inlet.Cold.z);
93        Properties.Cold.Inlet.K =               PP.LiquidThermalConductivity(Inlet.Cold.T,Inlet.Cold.P,Inlet.Cold.z);
94        Properties.Cold.Outlet.K =              PP.LiquidThermalConductivity(Outlet.Cold.T,Outlet.Cold.P,Outlet.Cold.z);
95
96"Heat Capacity Cold Stream"
97        Properties.Cold.Wall.Cp         =       PP.LiquidCp(Properties.Cold.Wall.Twall,Properties.Cold.Average.P,Inlet.Cold.z);
98       
99"Viscosity Cold Stream"
100        Properties.Cold.Wall.Mu =       PP.LiquidViscosity(Properties.Cold.Wall.Twall,Properties.Cold.Average.P,Inlet.Cold.z);
101
102"Conductivity Cold Stream"
103        Properties.Cold.Wall.K =        PP.LiquidThermalConductivity(Properties.Cold.Wall.Twall,Properties.Cold.Average.P,Inlet.Cold.z);
104
105
106        else
107
108"Heat Capacity Cold Stream"
109        Properties.Cold.Average.Cp      =       PP.VapourCp(Properties.Cold.Average.T,Properties.Cold.Average.P,Inlet.Cold.z);
110        Properties.Cold.Inlet.Cp        =       PP.VapourCp(Inlet.Cold.T,Inlet.Cold.P,Inlet.Cold.z);
111        Properties.Cold.Outlet.Cp       =       PP.VapourCp(Outlet.Cold.T,Outlet.Cold.P,Outlet.Cold.z);
112
113"Mass Density Cold Stream"
114        Properties.Cold.Average.rho     =       PP.VapourDensity(Properties.Cold.Average.T,Properties.Cold.Average.P,Inlet.Cold.z);
115        Properties.Cold.Inlet.rho       =       PP.VapourDensity(Inlet.Cold.T,Inlet.Cold.P,Inlet.Cold.z);
116        Properties.Cold.Outlet.rho      =       PP.VapourDensity(Outlet.Cold.T,Outlet.Cold.P,Outlet.Cold.z);
117
118"Viscosity Cold Stream"
119        Properties.Cold.Average.Mu =    PP.VapourViscosity(Properties.Cold.Average.T,Properties.Cold.Average.P,Inlet.Cold.z);
120        Properties.Cold.Inlet.Mu =              PP.VapourViscosity(Inlet.Cold.T,Inlet.Cold.P,Inlet.Cold.z);
121        Properties.Cold.Outlet.Mu =             PP.VapourViscosity(Outlet.Cold.T,Outlet.Cold.P,Outlet.Cold.z);
122
123"Conductivity Cold Stream"
124        Properties.Cold.Average.K =     PP.VapourThermalConductivity(Properties.Cold.Average.T,Properties.Cold.Average.P,Inlet.Cold.z);
125        Properties.Cold.Inlet.K =               PP.VapourThermalConductivity(Inlet.Cold.T,Inlet.Cold.P,Inlet.Cold.z);
126        Properties.Cold.Outlet.K =              PP.VapourThermalConductivity(Outlet.Cold.T,Outlet.Cold.P,Outlet.Cold.z);
127       
128"Heat Capacity Cold Stream"
129        Properties.Cold.Wall.Cp         =       PP.VapourCp(Properties.Cold.Wall.Twall,Properties.Cold.Average.P,Inlet.Cold.z);
130
131
132"Viscosity Cold Stream"
133        Properties.Cold.Wall.Mu =       PP.VapourViscosity(Properties.Cold.Wall.Twall,Properties.Cold.Average.P,Inlet.Cold.z);
134
135"Conductivity Cold Stream"
136        Properties.Cold.Wall.K =        PP.VapourThermalConductivity(Properties.Cold.Wall.Twall,Properties.Cold.Average.P,Inlet.Cold.z);
137       
138       
139       
140end
141
142if Inlet.Hot.v equal 0
143
144        then
145
146"Heat Capacity Hot Stream"
147        Properties.Hot.Average.Cp       =               PP.LiquidCp(Properties.Hot.Average.T,Properties.Hot.Average.P,Inlet.Hot.z);
148        Properties.Hot.Inlet.Cp         =               PP.LiquidCp(Inlet.Hot.T,Inlet.Hot.P,Inlet.Hot.z);
149        Properties.Hot.Outlet.Cp        =               PP.LiquidCp(Outlet.Hot.T,Outlet.Hot.P,Outlet.Hot.z);
150
151"Mass Density Hot Stream"
152        Properties.Hot.Average.rho      =               PP.LiquidDensity(Properties.Hot.Average.T,Properties.Hot.Average.P,Inlet.Hot.z);
153        Properties.Hot.Inlet.rho        =               PP.LiquidDensity(Inlet.Hot.T,Inlet.Hot.P,Inlet.Hot.z);
154        Properties.Hot.Outlet.rho       =               PP.LiquidDensity(Outlet.Hot.T,Outlet.Hot.P,Outlet.Hot.z);
155
156"Viscosity Hot Stream"
157        Properties.Hot.Average.Mu       =               PP.LiquidViscosity(Properties.Hot.Average.T,Properties.Hot.Average.P,Inlet.Hot.z);     
158        Properties.Hot.Inlet.Mu         =               PP.LiquidViscosity(Inlet.Hot.T,Inlet.Hot.P,Inlet.Hot.z);       
159        Properties.Hot.Outlet.Mu        =               PP.LiquidViscosity(Outlet.Hot.T,Outlet.Hot.P,Outlet.Hot.z);     
160
161"Conductivity Hot Stream"
162        Properties.Hot.Average.K        =               PP.LiquidThermalConductivity(Properties.Hot.Average.T,Properties.Hot.Average.P,Inlet.Hot.z);   
163        Properties.Hot.Inlet.K  =               PP.LiquidThermalConductivity(Inlet.Hot.T,Inlet.Hot.P,Inlet.Hot.z);     
164        Properties.Hot.Outlet.K         =               PP.LiquidThermalConductivity(Outlet.Hot.T,Outlet.Hot.P,Outlet.Hot.z);   
165
166"Heat Capacity Hot Stream"
167        Properties.Hot.Wall.Cp  =               PP.LiquidCp(Properties.Hot.Wall.Twall,Properties.Hot.Average.P,Inlet.Hot.z);
168
169"Viscosity Hot Stream"
170        Properties.Hot.Wall.Mu  =               PP.LiquidViscosity(Properties.Hot.Wall.Twall,Properties.Hot.Average.P,Inlet.Hot.z);     
171
172"Conductivity Hot Stream"
173        Properties.Hot.Wall.K   =               PP.LiquidThermalConductivity(Properties.Hot.Wall.Twall,Properties.Hot.Average.P,Inlet.Hot.z);   
174       
175
176        else
177
178"Heat Capacity Hot Stream"
179        Properties.Hot.Average.Cp       =               PP.VapourCp(Properties.Hot.Average.T,Properties.Hot.Average.P,Inlet.Hot.z);
180        Properties.Hot.Inlet.Cp         =               PP.VapourCp(Inlet.Hot.T,Inlet.Hot.P,Inlet.Hot.z);
181        Properties.Hot.Outlet.Cp        =               PP.VapourCp(Outlet.Hot.T,Outlet.Hot.P,Outlet.Hot.z);
182
183"Mass Density Hot Stream"
184        Properties.Hot.Average.rho      =               PP.VapourDensity(Properties.Hot.Average.T,Properties.Hot.Average.P,Inlet.Hot.z);
185        Properties.Hot.Inlet.rho        =               PP.VapourDensity(Inlet.Hot.T,Inlet.Hot.P,Inlet.Hot.z);
186        Properties.Hot.Outlet.rho       =               PP.VapourDensity(Outlet.Hot.T,Outlet.Hot.P,Outlet.Hot.z);
187
188"Viscosity Hot Stream"
189        Properties.Hot.Average.Mu       =               PP.VapourViscosity(Properties.Hot.Average.T,Properties.Hot.Average.P,Inlet.Hot.z);
190        Properties.Hot.Inlet.Mu         =               PP.VapourViscosity(Inlet.Hot.T,Inlet.Hot.P,Inlet.Hot.z);
191        Properties.Hot.Outlet.Mu        =               PP.VapourViscosity(Outlet.Hot.T,Outlet.Hot.P,Outlet.Hot.z);
192
193"Conductivity Hot Stream"
194        Properties.Hot.Average.K        =               PP.VapourThermalConductivity(Properties.Hot.Average.T,Properties.Hot.Average.P,Inlet.Hot.z);   
195        Properties.Hot.Inlet.K  =               PP.VapourThermalConductivity(Inlet.Hot.T,Inlet.Hot.P,Inlet.Hot.z);     
196        Properties.Hot.Outlet.K         =               PP.VapourThermalConductivity(Outlet.Hot.T,Outlet.Hot.P,Outlet.Hot.z);   
197
198"Heat Capacity Hot Stream"
199        Properties.Hot.Wall.Cp  =               PP.VapourCp(Properties.Hot.Wall.Twall,Properties.Hot.Average.P,Inlet.Hot.z);
200
201"Viscosity Hot Stream"
202        Properties.Hot.Wall.Mu  =               PP.VapourViscosity(Properties.Hot.Wall.Twall,Properties.Hot.Average.P,Inlet.Hot.z);
203
204"Conductivity Hot Stream"
205        Properties.Hot.Wall.K   =               PP.VapourThermalConductivity(Properties.Hot.Wall.Twall,Properties.Hot.Average.P,Inlet.Hot.z);   
206
207
208end
209
210#=====================================================================
211#       Thermal Details
212#=====================================================================
213"Hot Stream Heat Capacity"
214        Details.Ch =Inlet.Hot.F*Properties.Hot.Average.Cp;
215       
216"Cold Stream Heat Capacity"
217        Details.Cc =Inlet.Cold.F*Properties.Cold.Average.Cp;
218       
219"Heat Capacity Ratio"
220        [Details.Cmin,Details.Cmax,Details.Cr]  = HE.HeatCapacityRatio(Details.Ch,Details.Cc);
221
222#=====================================================================
223#       Energy Balance
224#=====================================================================
225"Energy Balance Hot Stream"
226        Details.Q = Inlet.Hot.F*(Inlet.Hot.h-Outlet.Hot.h);
227
228"Energy Balance Cold Stream"
229        Details.Q =-Inlet.Cold.F*(Inlet.Cold.h-Outlet.Cold.h);
230
231#=====================================================================
232#       Material Balance
233#=====================================================================
234"Flow Mass Inlet Cold Stream"
235        Properties.Cold.Inlet.Fw        =  sum(M*Inlet.Cold.z)*Inlet.Cold.F;
236
237"Flow Mass Outlet Cold Stream"
238        Properties.Cold.Outlet.Fw       =  sum(M*Outlet.Cold.z)*Outlet.Cold.F;
239
240"Flow Mass Inlet Hot Stream"
241        Properties.Hot.Inlet.Fw         =  sum(M*Inlet.Hot.z)*Inlet.Hot.F;
242
243"Flow Mass Outlet Hot Stream"   
244        Properties.Hot.Outlet.Fw        =  sum(M*Outlet.Hot.z)*Outlet.Hot.F;
245
246"Molar Balance Hot Stream"
247        Inlet.Hot.F  = Outlet.Hot.F;
248       
249"Molar Balance Cold Stream"
250        Inlet.Cold.F = Outlet.Cold.F;
251
252#======================================
253#       Constraints
254#======================================
255"Hot Stream Molar Fraction Constraint"
256        Outlet.Hot.z=Inlet.Hot.z;
257       
258"Cold Stream Molar Fraction Constraint"
259        Outlet.Cold.z=Inlet.Cold.z;
260       
261"No Phase Change In Cold Stream"
262        Inlet.Cold.v=Outlet.Cold.v;
263
264"No Phase Change In Hot Stream"
265        Inlet.Hot.v=Outlet.Hot.v;
266
267#======================================
268#       Pressure Drop
269#======================================
270
271"Pressure Drop Hot Stream"
272        Outlet.Hot.P  = Inlet.Hot.P - PressureDrop.Hot.Pdrop;
273       
274"Pressure Drop Cold Stream"
275        Outlet.Cold.P  = Inlet.Cold.P - PressureDrop.Cold.Pdrop;
276       
277"Fraction of Inlet Pressure : Hot Stream"
278        PressureDrop.Hot.Pdrop  = Inlet.Hot.P*PressureDrop.Hot.FPdrop;
279       
280"Fraction of Inlet Pressure : Cold Stream"
281        PressureDrop.Cold.Pdrop  = Inlet.Cold.P*PressureDrop.Cold.FPdrop;
282       
283       
284end
285
286Model Heatex_Basic_NTU   as HeatExchangerSimplified_Basic
287#=====================================================================
288#       Basic Model for Heat Exchangers - NTU Method
289#=====================================================================
290VARIABLES
291
292Eft       as positive (Brief="Effectiveness",Default=0.05,Lower=1e-8);
293
294EQUATIONS       
295
296"Energy Balance"
297        Details.Q       = Eft*Details.Cmin*(Inlet.Hot.T-Inlet.Cold.T); 
298
299
300end
301
302Model Heatex_Basic_LMTD  as HeatExchangerSimplified_Basic
303#=====================================================================
304#       Basic Model for Heat Exchangers - LMTD Method
305#=====================================================================
306
307VARIABLES
308
309LMTD                    as temp_delta   (Brief="Logarithmic Mean Temperature Difference");
310Fc                              as positive             (Brief="LMTD Correction Factor",Lower=0.75);
311MTD                             as temp_delta   (Brief="Mean Temperature Difference");
312
313EQUATIONS
314
315"Exchange Surface Area"
316        Details.Q = Details.U*Details.A*Fc*LMTD;       
317       
318"Mean Temperature Difference"   
319        MTD   = Fc*LMTD;
320
321end
322
323
324#=====================================================================
325#       Concrete Models for Simplified Heat Exchangers
326#=====================================================================
327
328#=====================================================================
329# LMTD Method
330#=====================================================================
331
332Model HeatExchanger_LMTD        as Heatex_Basic_LMTD
333
334EQUATIONS
335
336"Cocurrent Flow LMTD"
337        LMTD = HE.LogMeanTemperature(Inlet.Hot.T,Outlet.Hot.T,Inlet.Cold.T,Outlet.Cold.T);
338
339end
340
341Model E_Shell_LMTD                      as Heatex_Basic_LMTD       
342#=====================================================================
343#       Shell and Tubes Heat Exchanger with 1 shell pass - LMTD Method
344#===================================================================== 
345EQUATIONS
346
347"Counter Flow LMTD"
348        LMTD = HE.CounterLMTD(Inlet.Hot.T,Outlet.Hot.T,Inlet.Cold.T,Outlet.Cold.T);
349
350"LMTD Correction Factor"
351        Fc = HE.EshellCorrectionFactor(Inlet.Hot.T,Outlet.Hot.T,Inlet.Cold.T,Outlet.Cold.T);
352
353end
354
355Model F_Shell_LMTD              as Heatex_Basic_LMTD
356#=====================================================================
357#       Shell and Tubes Heat Exchanger with 2 shell passes - LMTD Method
358#=====================================================================
359EQUATIONS
360
361"Counter Flow LMTD"
362        LMTD = HE.CounterLMTD(Inlet.Hot.T,Outlet.Hot.T,Inlet.Cold.T,Outlet.Cold.T);
363
364"LMTD Correction Factor"
365        Fc = HE.FshellCorrectionFactor(Inlet.Hot.T,Outlet.Hot.T,Inlet.Cold.T,Outlet.Cold.T);
366
367end
368
369Model Multipass_LMTD            as Heatex_Basic_LMTD
370#============================================================================
371#       Shell and Tubes Heat Exchanger In Series with 1 shell pass - LMTD Method
372#============================================================================
373PARAMETERS
374
375Nshell  as Integer      (Brief="N Shell in Series",Lower=2);
376
377EQUATIONS
378
379"Counter Flow LMTD"
380        LMTD = HE.CounterLMTD(Inlet.Hot.T,Outlet.Hot.T,Inlet.Cold.T,Outlet.Cold.T);
381
382"LMTD Correction Factor"
383        Fc = HE.MpassCorrectionFactor(Inlet.Hot.T,Outlet.Hot.T,Inlet.Cold.T,Outlet.Cold.T,Nshell);
384
385end
386
387
388#=====================================================================
389# NTU Method
390#=====================================================================
391
392Model HeatExchanger_NTU         as Heatex_Basic_NTU
393
394EQUATIONS
395
396"Effectiveness"
397        Eft=HE.Effectiveness(Details.Cr,Details.NTU);
398       
399end
400
401Model E_Shell_NTU                       as Heatex_Basic_NTU
402#=====================================================================
403#       Shell and Tubes Heat Exchanger with 1 shell pass - NTU Method
404#=====================================================================
405EQUATIONS
406
407"TEMA E Shell Effectiveness"
408        Eft = 2*(1+Details.Cr+sqrt(1+Details.Cr^2)*((1+exp(-Details.NTU*sqrt(1+Details.Cr^2)))/(1-exp(-Details.NTU*sqrt(1+Details.Cr^2)))) )^-1;
409
410end
411
412Model F_Shell_NTU               as Heatex_Basic_NTU
413#=====================================================================
414#       Shell and Tubes Heat Exchanger with 2 shell passes - NTU Method
415#===================================================================== 
416VARIABLES
417
418Eft1    as positive (Brief="Effectiveness Correction",Lower=0.01,Upper=1,Default=0.5);
419
420EQUATIONS
421
422"Effectiveness Correction"
423        Eft1 = 2*(1+Details.Cr+sqrt(1+Details.Cr^2)*((1+exp(-Details.NTU*sqrt(1+Details.Cr^2)))/(1-exp(-Details.NTU*sqrt(1+Details.Cr^2)))) )^-1;
424
425"TEMA F Shell Effectiveness"
426        Eft = ( ((1-Eft1*Details.Cr)/(1-Eft1))^2 -1  )*( ((1-Eft1*Details.Cr)/(1-Eft1))^2 - Details.Cr )^-1;
427
428end
Note: See TracBrowser for help on using the repository browser.