source: branches/gui/eml/heat_exchangers/DoublePipe.mso @ 803

Last change on this file since 803 was 551, checked in by gerson bicca, 15 years ago

updated

  • Property svn:keywords set to Id
File size: 27.1 KB
Line 
1#*-------------------------------------------------------------------
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* Author: Gerson Balbueno Bicca
16* $Id: DoublePipe.mso 551 2008-07-08 20:51:28Z bicca $
17*------------------------------------------------------------------*#
18
19using "HEX_Engine";
20
21Model DoublePipe_Geometry
22
23ATTRIBUTES
24        Pallete         = false;
25        Brief           = "double pipe geometrical parameters.";
26
27PARAMETERS
28
29outer PP                as Plugin               (Brief="External Physical Properties", Type="PP");
30outer NComp     as Integer      (Brief="Number of Components",Hidden=true);
31
32        M(NComp)        as molweight    (Brief="Component Mol Weight",Hidden=true);
33
34        Pi                                      as constant             (Brief="Pi Number",Default=3.14159265, Symbol = "\pi",Hidden=true);
35        DoInner                 as length                       (Brief="Outside Diameter of Inner Pipe",Lower=1e-6);
36        DiInner         as length                       (Brief="Inside Diameter of Inner Pipe",Lower=1e-10);
37        DiOuter         as length                       (Brief="Inside Diameter of Outer pipe",Lower=1e-10);
38        Lpipe                   as length                       (Brief="Effective Tube Length of one segment of Pipe",Lower=0.1, Symbol = "L_{pipe}");
39        Kwall                   as conductivity         (Brief="Tube Wall Material Thermal Conductivity",Default=1.0, Symbol = "K_{wall}");
40        Rfi                             as positive                     (Brief="Inside Fouling Resistance",Unit='m^2*K/kW',Default=1e-6,Lower=0);
41        Rfo                             as positive                     (Brief="Outside Fouling Resistance",Unit='m^2*K/kW',Default=1e-6,Lower=0);
42
43SET
44
45#"Component Molecular Weight"
46        M  = PP.MolecularWeight();
47
48#"Pi Number"
49        Pi = 3.14159265;
50
51end
52
53Model DoublePipe_Basic
54
55ATTRIBUTES
56        Pallete         = false;
57        Brief           = "Basic Equations for rigorous double pipe heat exchanger model.";
58        Info            =
59        "Thermal analysis of double pipe heat exchanger using the NTU or LMTD Method.
60
61== References ==
62
63[1] E.A.D. Saunders, Heat Exchangers: Selection, Design and
64 Construction, Longman, Harlow, 1988.
65
66[2] Serth, Robert W., Process Heat Transfer: Principles and Applications, Elsevier, 2007.
67
68[3] Gnielinski, V., Forced convection in ducts, in Heat Exchanger Design Handbook, Vol. 2
69 Hemisphere Publishing Corp., New York, 1988.";
70
71PARAMETERS
72
73outer PP                as Plugin               (Brief="External Physical Properties", Type="PP");
74outer NComp     as Integer      (Brief="Number of Components",Hidden=true);
75       
76        M(NComp)        as molweight    (Brief="Component Mol Weight",Hidden=true);
77       
78        HotSide                                         as Switcher     (Brief="Flag for Fluid Alocation ",Valid=["outer","inner"],Default="outer",Hidden=true);
79        innerFlowRegime         as Switcher     (Brief="Inner Flow Regime ",Valid=["laminar","transition","turbulent"],Default="laminar",Hidden=true);
80        outerFlowRegime         as Switcher     (Brief="Outer Flow Regime ",Valid=["laminar","transition","turbulent"],Default="laminar",Hidden=true);
81
82        InnerLaminarCorrelation         as Switcher     (Brief="Heat Transfer Correlation in Laminar Flow for the Inner Side",Valid=["Hausen","Schlunder"],Default="Hausen");
83        InnerTransitionCorrelation  as Switcher         (Brief="Heat Transfer Correlation in Transition Flow for the Inner Side",Valid=["Gnielinski","Hausen"],Default="Gnielinski");
84        InnerTurbulentCorrelation   as Switcher (Brief="Heat Transfer Correlation in Turbulent Flow for the Inner Side",Valid=["Petukhov","SiederTate"],Default="Petukhov");
85
86        OuterLaminarCorrelation         as Switcher             (Brief="Heat Transfer Correlation in Laminar Flow for the Outer Side",Valid=["Hausen","Schlunder"],Default="Hausen");
87        OuterTransitionCorrelation  as Switcher         (Brief="Heat Transfer Correlation in Transition Flow for the OuterSide",Valid=["Gnielinski","Hausen"],Default="Gnielinski");
88        OuterTurbulentCorrelation   as Switcher         (Brief="Heat Transfer Correlation in Turbulent Flow for the Outer Side",Valid=["Petukhov","SiederTate"],Default="Petukhov");
89
90        CalculationApproach                     as Switcher     (Brief="Options for convergence Calculations ",Valid=["Simplified","Full"],Default="Full");
91        Qestimated                                                      as power                (Brief="Estimated Duty", Default=70, Lower=1e-6, Upper=1e10);
92
93VARIABLES
94
95        Geometry                        as DoublePipe_Geometry  (Brief="Double pipe geometry",Symbol=" ");     
96in  InletInner                  as stream                                                               (Brief="Inlet Inner Stream", PosX=0, PosY=0.5225, Symbol="_{inInner}");
97in  InletOuter                  as stream                                                               (Brief="Inlet Outer Stream", PosX=0.2805, PosY=0, Symbol="_{inOuter}");
98out OutletInner         as streamPH                                             (Brief="Outlet Inner Stream", PosX=1, PosY=0.5225, Symbol="_{outInner}");
99out OutletOuter         as streamPH                                             (Brief="Outlet Outer Stream", PosX=0.7264, PosY=1, Symbol="_{outOuter}");
100
101        Details         as Details_Main                         (Brief="Some Details in the Heat Exchanger", Symbol=" ");
102        Inner                   as Main_DoublePipe              (Brief="Inner Side of the Heat Exchanger", Symbol="_{Inner}");
103        Outer                   as Main_DoublePipe              (Brief="Outer Side of the Heat Exchanger", Symbol="_{Outer}");
104
105SET
106
107#"Inner Pipe Cross Sectional Area for Flow"
108        Inner.HeatTransfer.As = 0.25*Geometry.Pi*Geometry.DiInner*Geometry.DiInner;
109       
110#"Outer Pipe Cross Sectional Area for Flow"
111        Outer.HeatTransfer.As  = 0.25*Geometry.Pi*(Geometry.DiOuter*Geometry.DiOuter - Geometry.DoInner*Geometry.DoInner);
112       
113#"Inner Pipe Hydraulic Diameter for Heat Transfer"
114        Inner.HeatTransfer.Dh = Geometry.DiInner;
115       
116#"Outer Pipe Hydraulic Diameter for Heat Transfer"
117        Outer.HeatTransfer.Dh = (Geometry.DiOuter*Geometry.DiOuter-Geometry.DoInner*Geometry.DoInner)/Geometry.DoInner;
118
119#"Inner Pipe Hydraulic Diameter for Pressure Drop"
120        Inner.PressureDrop.Dh = Geometry.DiInner;
121       
122#"Outer Pipe Hydraulic Diameter for Pressure Drop"
123        Outer.PressureDrop.Dh=Geometry.DiOuter-Geometry.DoInner;
124
125EQUATIONS
126
127"Outer  Stream Average Temperature"
128        Outer.Properties.Average.T = 0.5*InletOuter.T + 0.5*OutletOuter.T;
129
130"Inner Stream Average Temperature"
131        Inner.Properties.Average.T = 0.5*InletInner.T + 0.5*OutletInner.T;
132       
133"Outer Stream Average Pressure"
134        Outer.Properties.Average.P = 0.5*InletOuter.P+0.5*OutletOuter.P;
135       
136"Inner Stream Average Pressure"
137        Inner.Properties.Average.P = 0.5*InletInner.P+0.5*OutletInner.P;
138
139"Inner Stream Wall Temperature"
140        Inner.Properties.Wall.Twall =   0.5*Outer.Properties.Average.T + 0.5*Inner.Properties.Average.T;
141
142"Outer Stream Wall Temperature"
143        Outer.Properties.Wall.Twall =   0.5*Outer.Properties.Average.T + 0.5*Inner.Properties.Average.T;
144
145"Outer Stream Average Molecular Weight"
146        Outer.Properties.Average.Mw = sum(M*InletOuter.z);
147
148"Inner Stream Average Molecular Weight"
149        Inner.Properties.Average.Mw = sum(M*InletInner.z);
150
151"Flow Mass Inlet Inner Stream"
152        Inner.Properties.Inlet.Fw       =  sum(M*InletInner.z)*InletInner.F;
153
154"Flow Mass Outlet Inner Stream"
155        Inner.Properties.Outlet.Fw      =  sum(M*OutletInner.z)*OutletInner.F;
156
157"Flow Mass Inlet Outer Stream"
158        Outer.Properties.Inlet.Fw               =  sum(M*InletOuter.z)*InletOuter.F;
159
160"Flow Mass Outlet Outer Stream"
161        Outer.Properties.Outlet.Fw      =  sum(M*OutletOuter.z)*OutletOuter.F;
162
163"Molar Balance Outer Stream"
164        OutletOuter.F = InletOuter.F;
165       
166"Molar Balance Inner Stream"
167        OutletInner.F = InletInner.F;
168
169"Outer Stream Molar Fraction Constraint"
170        OutletOuter.z=InletOuter.z;
171       
172"Inner Stream Molar Fraction Constraint"
173        OutletInner.z=InletInner.z;
174
175"Exchange Surface Area for one segment of pipe"
176        Details.A=Geometry.Pi*Geometry.DoInner*Geometry.Lpipe;
177
178if InletInner.v equal 0
179       
180        then   
181
182"Average Heat Capacity Inner Stream"
183        Inner.Properties.Average.Cp             =       PP.LiquidCp(Inner.Properties.Average.T,Inner.Properties.Average.P,InletInner.z);
184
185"Average Mass Density Inner Stream"
186        Inner.Properties.Average.rho    =       PP.LiquidDensity(Inner.Properties.Average.T,Inner.Properties.Average.P,InletInner.z);
187
188"Inlet Mass Density Inner Stream"
189        Inner.Properties.Inlet.rho              =       PP.LiquidDensity(InletInner.T,InletInner.P,InletInner.z);
190
191"Outlet Mass Density Inner Stream"
192        Inner.Properties.Outlet.rho     =       PP.LiquidDensity(OutletInner.T,OutletInner.P,OutletInner.z);
193
194"Average Viscosity Inner Stream"
195        Inner.Properties.Average.Mu     =       PP.LiquidViscosity(Inner.Properties.Average.T,Inner.Properties.Average.P,InletInner.z);
196
197"Average        Conductivity Inner Stream"
198        Inner.Properties.Average.K              =       PP.LiquidThermalConductivity(Inner.Properties.Average.T,Inner.Properties.Average.P,InletInner.z);
199
200"Viscosity Inner Stream at wall temperature"
201        Inner.Properties.Wall.Mu                =       PP.LiquidViscosity(Inner.Properties.Wall.Twall,Inner.Properties.Average.P,InletInner.z);
202
203        else
204
205"Average Heat Capacity InnerStream"
206        Inner.Properties.Average.Cp     =       PP.VapourCp(Inner.Properties.Average.T,Inner.Properties.Average.P,InletInner.z);
207
208"Average Mass Density Inner Stream"
209        Inner.Properties.Average.rho    =       PP.VapourDensity(Inner.Properties.Average.T,Inner.Properties.Average.P,InletInner.z);
210
211"Inlet Mass Density Inner Stream"
212        Inner.Properties.Inlet.rho              =       PP.VapourDensity(InletInner.T,InletInner.P,InletInner.z);
213       
214"Outlet Mass Density Inner Stream"
215        Inner.Properties.Outlet.rho     =       PP.VapourDensity(OutletInner.T,OutletInner.P,OutletInner.z);
216
217"Average Viscosity Inner Stream"
218        Inner.Properties.Average.Mu     =       PP.VapourViscosity(Inner.Properties.Average.T,Inner.Properties.Average.P,InletInner.z);
219
220"Average Conductivity Inner Stream"
221        Inner.Properties.Average.K              =       PP.VapourThermalConductivity(Inner.Properties.Average.T,Inner.Properties.Average.P,InletInner.z);
222
223"Viscosity Inner Stream at wall temperature"
224        Inner.Properties.Wall.Mu                =       PP.VapourViscosity(Inner.Properties.Wall.Twall,Inner.Properties.Average.P,InletInner.z);
225
226end
227
228if InletOuter.v equal 0
229
230        then
231
232"Average Heat Capacity Outer Stream"
233        Outer.Properties.Average.Cp     =               PP.LiquidCp(Outer.Properties.Average.T,Outer.Properties.Average.P,InletOuter.z);
234
235"Average Mass Density Outer Stream"
236        Outer.Properties.Average.rho =          PP.LiquidDensity(Outer.Properties.Average.T,Outer.Properties.Average.P,InletOuter.z);
237
238"Inlet Mass Density Outer Stream"
239        Outer.Properties.Inlet.rho              =               PP.LiquidDensity(InletOuter.T,InletOuter.P,InletOuter.z);
240
241"Outlet Mass Density Outer Stream"
242        Outer.Properties.Outlet.rho     =               PP.LiquidDensity(OutletOuter.T,OutletOuter.P,OutletOuter.z);
243
244"Average Viscosity Outer Stream"
245        Outer.Properties.Average.Mu     =               PP.LiquidViscosity(Outer.Properties.Average.T,Outer.Properties.Average.P,InletOuter.z);
246
247"Average Conductivity Outer Stream"
248        Outer.Properties.Average.K      =               PP.LiquidThermalConductivity(Outer.Properties.Average.T,Outer.Properties.Average.P,InletOuter.z);       
249
250"Viscosity Outer Stream at wall temperature"
251        Outer.Properties.Wall.Mu                =               PP.LiquidViscosity(Outer.Properties.Wall.Twall,Outer.Properties.Average.P,InletOuter.z);       
252
253
254        else
255
256"Average Heat Capacity Outer Stream"
257        Outer.Properties.Average.Cp     =               PP.VapourCp(Outer.Properties.Average.T,Outer.Properties.Average.P,InletOuter.z);
258
259"Average Mass Density Outer Stream"
260        Outer.Properties.Average.rho =          PP.VapourDensity(Outer.Properties.Average.T,Outer.Properties.Average.P,InletOuter.z);
261
262"Inlet Mass Density Outer Stream"
263        Outer.Properties.Inlet.rho              =               PP.VapourDensity(InletOuter.T,InletOuter.P,InletOuter.z);
264       
265"Outlet Mass Density Outer Stream"
266        Outer.Properties.Outlet.rho     =               PP.VapourDensity(OutletOuter.T,OutletOuter.P,OutletOuter.z);
267
268"Average Viscosity Outer Stream"
269        Outer.Properties.Average.Mu     =               PP.VapourViscosity(Outer.Properties.Average.T,Outer.Properties.Average.P,InletOuter.z);
270
271"Average Conductivity Outer Stream"
272        Outer.Properties.Average.K      =               PP.VapourThermalConductivity(Outer.Properties.Average.T,Outer.Properties.Average.P,InletOuter.z);       
273
274"Viscosity Outer Stream at wall temperature"
275        Outer.Properties.Wall.Mu                =               PP.VapourViscosity(Outer.Properties.Wall.Twall,Outer.Properties.Average.P,InletOuter.z);
276
277end
278
279switch HotSide
280       
281        case "outer":
282
283"Energy Balance Outer Stream"
284        Details.Q = InletOuter.F*(InletOuter.h-OutletOuter.h);
285
286"Energy Balance Inner Stream"
287        Details.Q = InletInner.F*(OutletInner.h-InletInner.h);
288
289        when InletInner.T > InletOuter.T switchto "inner";
290
291case "inner":
292
293"Energy Balance Hot Stream"
294        Details.Q = InletInner.F*(InletInner.h-OutletInner.h);
295
296"Energy Balance Cold Stream"
297        Details.Q = InletOuter.F*(OutletOuter.h - InletOuter.h);
298
299        when InletInner.T < InletOuter.T switchto "outer";
300
301end
302
303switch innerFlowRegime
304       
305        case "laminar":
306       
307"Inner Side Friction Factor for Pressure Drop - laminar Flow"
308        Inner.PressureDrop.fi*Inner.PressureDrop.Re = 16;
309       
310        when Inner.PressureDrop.Re > 2300 switchto "transition";
311
312        case "transition":
313       
314"using Turbulent Flow"
315        (Inner.PressureDrop.fi-0.0035)*(Inner.PressureDrop.Re^0.42) = 0.264;
316
317        when Inner.PressureDrop.Re < 2300 switchto "laminar";
318        when Inner.PressureDrop.Re > 10000 switchto "turbulent";
319
320        case "turbulent":
321
322"Inner Side Friction Factor"
323        (Inner.PressureDrop.fi-0.0035)*(Inner.PressureDrop.Re^0.42) = 0.264;
324
325        when Inner.PressureDrop.Re < 10000 switchto "transition";
326       
327end     
328
329switch outerFlowRegime
330       
331        case "laminar":
332       
333"Outer Side Friction Factor - laminar Flow"
334        Outer.PressureDrop.fi*Outer.PressureDrop.Re = 16;
335       
336        when Outer.PressureDrop.Re > 2300 switchto "transition";
337
338        case "transition":
339       
340"using Turbulent Flow"
341        (Outer.PressureDrop.fi-0.0035)*(Outer.PressureDrop.Re^0.42) = 0.264;
342
343        when Outer.PressureDrop.Re < 2300 switchto "laminar";
344        when Outer.PressureDrop.Re > 10000 switchto "turbulent";
345
346        case "turbulent":
347
348"Outer Side Friction Factor"
349        (Outer.PressureDrop.fi-0.0035)*(Outer.PressureDrop.Re^0.42) = 0.264;
350
351        when Outer.PressureDrop.Re < 10000 switchto "transition";
352       
353end
354
355switch innerFlowRegime
356       
357        case "laminar":
358       
359"Inner Side Friction Factor for Heat Transfer - laminar Flow"
360        Inner.HeatTransfer.fi   = 1/(0.79*ln(Inner.HeatTransfer.Re)-1.64)^2;
361       
362switch InnerLaminarCorrelation
363       
364        case "Hausen":
365
366"Nusselt Number"
367        Inner.HeatTransfer.Nu = 3.665 + ((0.19*((Geometry.DiInner/Geometry.Lpipe)*Inner.HeatTransfer.Re*Inner.HeatTransfer.PR)^0.8)/(1+0.117*((Geometry.DiInner/Geometry.Lpipe)*Inner.HeatTransfer.Re*Inner.HeatTransfer.PR)^0.467));
368       
369        case "Schlunder":
370
371"Nusselt Number"
372        Inner.HeatTransfer.Nu = (49.027896+4.173281*Inner.HeatTransfer.Re*Inner.HeatTransfer.PR*(Geometry.DiInner/Geometry.Lpipe))^(1/3);
373
374end
375       
376        when Inner.HeatTransfer.Re > 2300 switchto "transition";
377       
378        case "transition":
379       
380"Inner Side Friction Factor for Heat Transfer - transition Flow"
381        Inner.HeatTransfer.fi   = 1/(0.79*ln(Inner.HeatTransfer.Re)-1.64)^2;
382       
383switch InnerTransitionCorrelation
384       
385        case "Gnielinski":
386       
387"Nusselt Number"
388        Inner.HeatTransfer.Nu*(1+(12.7*sqrt(0.125*Inner.HeatTransfer.fi)*((Inner.HeatTransfer.PR)^(2/3) -1))) = 0.125*Inner.HeatTransfer.fi*(Inner.HeatTransfer.Re-1000)*Inner.HeatTransfer.PR;
389
390        case "Hausen":
391
392"Nusselt Number"
393        Inner.HeatTransfer.Nu =0.116*(Inner.HeatTransfer.Re^(0.667)-125)*Inner.HeatTransfer.PR^(0.333)*(1+(Geometry.DiInner/Geometry.Lpipe)^0.667);
394       
395end
396
397        when Inner.HeatTransfer.Re < 2300 switchto "laminar";
398        when Inner.HeatTransfer.Re > 10000 switchto "turbulent";
399
400        case "turbulent":
401
402switch InnerTurbulentCorrelation
403       
404        case "Petukhov":
405       
406"Inner Side Friction Factor for Heat Transfer - turbulent Flow"
407        Inner.HeatTransfer.fi   = 1/(1.82*log(Inner.HeatTransfer.Re)-1.64)^2;
408
409"Nusselt Number"
410        Inner.HeatTransfer.Nu*(1.07+(12.7*sqrt(0.125*Inner.HeatTransfer.fi)*((Inner.HeatTransfer.PR)^(2/3) -1))) = 0.125*Inner.HeatTransfer.fi*Inner.HeatTransfer.Re*Inner.HeatTransfer.PR;
411       
412        case "SiederTate":
413
414"Nusselt Number"
415        Inner.HeatTransfer.Nu = 0.027*(Inner.HeatTransfer.PR)^(1/3)*(Inner.HeatTransfer.Re)^(4/5);
416
417"Inner Side Friction Factor for Heat Transfer - turbulent Flow"
418        Inner.HeatTransfer.fi   = 1/(1.82*log(Inner.HeatTransfer.Re)-1.64)^2;
419       
420end
421       
422        when Inner.HeatTransfer.Re < 10000 switchto "transition";
423       
424end
425
426switch outerFlowRegime
427       
428        case "laminar":
429       
430"Outer Side Friction Factor for Heat Transfer - laminar Flow"
431        Outer.HeatTransfer.fi   = 1/(0.79*ln(Outer.HeatTransfer.Re)-1.64)^2;
432       
433switch OuterLaminarCorrelation
434       
435        case "Hausen":
436
437"Nusselt Number"
438        Outer.HeatTransfer.Nu = 3.665 + ((0.19*((Outer.HeatTransfer.Dh/Geometry.Lpipe)*Outer.HeatTransfer.Re*Outer.HeatTransfer.PR)^0.8)/(1+0.117*((Outer.HeatTransfer.Dh/Geometry.Lpipe)*Outer.HeatTransfer.Re*Outer.HeatTransfer.PR)^0.467));
439       
440        case "Schlunder":
441
442"Nusselt Number"
443        Outer.HeatTransfer.Nu = (49.027896+4.173281*Outer.HeatTransfer.Re*Outer.HeatTransfer.PR*(Outer.HeatTransfer.Dh/Geometry.Lpipe))^(1/3);
444
445end
446       
447        when Outer.HeatTransfer.Re > 2300 switchto "transition";
448       
449        case "transition":
450       
451switch OuterTransitionCorrelation
452       
453        case "Gnielinski":
454
455"Outer Side Friction Factor for Heat Transfer - transition Flow"
456        Outer.HeatTransfer.fi   = 1/(0.79*ln(Outer.HeatTransfer.Re)-1.64)^2;
457
458"Nusselt Number"
459        Outer.HeatTransfer.Nu*(1+(12.7*sqrt(0.125*Outer.HeatTransfer.fi)*((Outer.HeatTransfer.PR)^(2/3) -1))) = 0.125*Outer.HeatTransfer.fi*(Outer.HeatTransfer.Re-1000)*Outer.HeatTransfer.PR;
460
461        case "Hausen":
462
463"Nusselt Number"
464        Outer.HeatTransfer.Nu = 0.116*(Outer.HeatTransfer.Re^(0.667)-125)*Outer.HeatTransfer.PR^(0.333)*(1+(Outer.HeatTransfer.Dh/Geometry.Lpipe)^0.667);
465
466
467"Outer Side Friction Factor for Heat Transfer - transition Flow"
468        Outer.HeatTransfer.fi   = 1/(0.79*ln(Outer.HeatTransfer.Re)-1.64)^2;
469       
470end
471       
472        when Outer.HeatTransfer.Re < 2300 switchto "laminar";
473        when Outer.HeatTransfer.Re > 10000 switchto "turbulent";
474       
475        case "turbulent":
476       
477switch OuterTurbulentCorrelation
478       
479        case "Petukhov":
480
481"Outer Side Friction Factor for Heat Transfer - turbulent Flow"
482        Outer.HeatTransfer.fi   = 1/(1.82*log(Outer.HeatTransfer.Re)-1.64)^2;
483       
484"Nusselt Number"
485        Outer.HeatTransfer.Nu*(1.07+(12.7*sqrt(0.125*Outer.HeatTransfer.fi)*((Outer.HeatTransfer.PR)^(2/3) -1))) = 0.125*Outer.HeatTransfer.fi*Outer.HeatTransfer.Re*Outer.HeatTransfer.PR;
486       
487        case "SiederTate":
488
489"Nusselt Number"
490        Outer.HeatTransfer.Nu = 0.027*(Outer.HeatTransfer.PR)^(1/3)*(Outer.HeatTransfer.Re)^(4/5);
491
492"Outer Side Friction Factor for Heat Transfer - turbulent Flow"
493        Outer.HeatTransfer.fi   = 1/(1.82*log(Outer.HeatTransfer.Re)-1.64)^2;
494       
495end
496
497        when Outer.HeatTransfer.Re < 10000 switchto "transition";
498
499end
500
501switch CalculationApproach
502       
503        case "Full":
504       
505"Total Pressure Drop Outer Stream"
506        Outer.PressureDrop.Pdrop  = Outer.PressureDrop.Pd_fric;
507
508"Total Pressure Drop Inner Stream"
509        Inner.PressureDrop.Pdrop  = Inner.PressureDrop.Pd_fric;
510       
511"Pressure Drop Outer Stream"
512        OutletOuter.P  = InletOuter.P - Outer.PressureDrop.Pdrop;
513
514"Pressure Drop Inner Stream"
515        OutletInner.P  = InletInner.P - Inner.PressureDrop.Pdrop;
516       
517"Outer Pipe Pressure Drop for friction"
518        Outer.PressureDrop.Pd_fric = (2*Outer.PressureDrop.fi*Geometry.Lpipe*Outer.Properties.Average.rho*Outer.HeatTransfer.Vmean^2)/(Outer.PressureDrop.Dh*Outer.HeatTransfer.Phi);
519       
520"Inner Pipe Pressure Drop for friction"
521        Inner.PressureDrop.Pd_fric = (2*Inner.PressureDrop.fi*Geometry.Lpipe*Inner.Properties.Average.rho*Inner.HeatTransfer.Vmean^2)/(Geometry.DiInner*Inner.HeatTransfer.Phi);
522
523        case "Simplified":
524       
525"Total Pressure Drop Outer Stream"
526        Outer.PressureDrop.Pdrop  = Outer.PressureDrop.Pd_fric;
527
528"Total Pressure Drop Inner Stream"
529        Inner.PressureDrop.Pdrop  = Inner.PressureDrop.Pd_fric;
530       
531"Pressure Drop Outer Stream"
532        OutletOuter.P  = InletOuter.P - Outer.PressureDrop.Pdrop;
533
534"Pressure Drop Inner Stream"
535        OutletInner.P  = InletInner.P - Inner.PressureDrop.Pdrop;
536       
537"Outer Pipe Pressure Drop for friction"
538        Outer.PressureDrop.Pd_fric = 0.01*InletOuter.P;
539       
540"Inner Pipe Pressure Drop for friction"
541        Inner.PressureDrop.Pd_fric = 0.01*InletInner.P;
542
543end
544
545"Inner Pipe Film Coefficient"
546        Inner.HeatTransfer.hcoeff = (Inner.HeatTransfer.Nu*Inner.Properties.Average.K/Geometry.DiInner)*Inner.HeatTransfer.Phi;
547
548"Outer Pipe Film Coefficient"
549        Outer.HeatTransfer.hcoeff= (Outer.HeatTransfer.Nu*Outer.Properties.Average.K/Outer.HeatTransfer.Dh)*Outer.HeatTransfer.Phi;
550
551"Outer Pipe Pressure Drop due to return"
552        Outer.PressureDrop.Pd_ret = 0*'kPa';
553
554"Inner Pipe Pressure Drop due to return"
555        Inner.PressureDrop.Pd_ret = 0*'kPa';
556
557"Outer Pipe Phi correction"
558        Outer.HeatTransfer.Phi = (Outer.Properties.Average.Mu/Outer.Properties.Wall.Mu)^0.14;
559
560"Inner Pipe Phi correction"
561        Inner.HeatTransfer.Phi  = (Inner.Properties.Average.Mu/Inner.Properties.Wall.Mu)^0.14;
562
563"Outer Pipe Prandtl Number"
564        Outer.HeatTransfer.PR = ((Outer.Properties.Average.Cp/Outer.Properties.Average.Mw)*Outer.Properties.Average.Mu)/Outer.Properties.Average.K;
565
566"Inner Pipe Prandtl Number"
567        Inner.HeatTransfer.PR = ((Inner.Properties.Average.Cp/Inner.Properties.Average.Mw)*Inner.Properties.Average.Mu)/Inner.Properties.Average.K;
568
569"Outer Pipe Reynolds Number for Heat Transfer"
570        Outer.HeatTransfer.Re = (Outer.Properties.Average.rho*Outer.HeatTransfer.Vmean*Outer.HeatTransfer.Dh)/Outer.Properties.Average.Mu;
571
572"Outer Pipe Reynolds Number for Pressure Drop"
573        Outer.PressureDrop.Re = (Outer.Properties.Average.rho*Outer.HeatTransfer.Vmean*Outer.PressureDrop.Dh)/Outer.Properties.Average.Mu;
574
575"Inner Pipe Reynolds Number for Heat Transfer"
576        Inner.HeatTransfer.Re = (Inner.Properties.Average.rho*Inner.HeatTransfer.Vmean*Inner.HeatTransfer.Dh)/Inner.Properties.Average.Mu;
577
578"Inner Pipe Reynolds Number for Pressure Drop"
579        Inner.PressureDrop.Re = Inner.HeatTransfer.Re;
580
581"Outer Pipe Velocity"
582        Outer.HeatTransfer.Vmean*(Outer.HeatTransfer.As*Outer.Properties.Average.rho)  = Outer.Properties.Inlet.Fw;
583
584"Inner Pipe Velocity"
585        Inner.HeatTransfer.Vmean*(Inner.HeatTransfer.As*Inner.Properties.Average.rho)  = Inner.Properties.Inlet.Fw;
586
587"Overall Heat Transfer Coefficient Clean"
588        Details.Uc*((Geometry.DoInner/(Inner.HeatTransfer.hcoeff*Geometry.DiInner) )+(Geometry.DoInner*ln(Geometry.DoInner/Geometry.DiInner)/(2*Geometry.Kwall))+(1/(Outer.HeatTransfer.hcoeff)))=1;
589
590"Overall Heat Transfer Coefficient Dirty"
591        Details.Ud*(Geometry.Rfi*(Geometry.DoInner/Geometry.DiInner) +  Geometry.Rfo + (Geometry.DoInner/(Inner.HeatTransfer.hcoeff*Geometry.DiInner) )+(Geometry.DoInner*ln(Geometry.DoInner/Geometry.DiInner)/(2*Geometry.Kwall))+(1/(Outer.HeatTransfer.hcoeff)))=1;
592
593end
594
595Model DoublePipe_NTU as DoublePipe_Basic
596
597ATTRIBUTES
598
599        Icon = "icon/DoublePipe";
600        Pallete = true;
601        Brief  = "Double Pipe Heat Exchanger - NTU Method";
602        Info  =
603"Thermal analysis of double pipe heat exchanger using the NTU Method.
604
605== Specify ==
606* The Inlet Inner stream
607* The Inlet Outer stream
608== Setting Parameters ==
609* Flow Direction:
610** counter flow
611** cocurrent flow (Default)
612* Heat Transfer Correlations:
613** Laminar flow
614*** Hausen (Default)
615*** Schlunder
616** Transition flow
617*** Gnielinski (Default)
618*** Hausen
619** Turbulent flow
620*** Petukhov (Default)
621*** Sieder Tate
622* Geometrical Parameters:
623** DoInner      - Outside Diameter of Inner Pipe
624** DiInner      - Inside Diameter of Inner Pipe
625** DiOuter      - Inside Diameter of Outer pipe
626** Lpipe                - Effective Tube Length of one segment of Pipe
627** Kwall                - Tube Wall Material Thermal Conductivity
628* Fouling:
629**Rfi   -       Inside Fouling Resistance
630**Rfo   -       Outside Fouling Resistance
631";
632
633PARAMETERS
634
635FlowDirection   as Switcher     (Brief="Flow Direction",Valid=["counter","cocurrent"],Default="cocurrent");
636Eftestimated    as positive  (Brief="Effectiveness estimate",Default=0.5);     
637
638VARIABLES
639
640Method as NTU_Basic     (Brief="NTU Method of Calculation", Symbol=" ");
641
642EQUATIONS
643
644"Effectiveness Correction"
645        Method.Eft1 = 1;
646
647switch CalculationApproach
648       
649        case "Full":
650       
651"Number of Units Transference"
652        Method.NTU*Method.Cmin = Details.Ud*Geometry.Pi*Geometry.DoInner*Geometry.Lpipe;
653       
654"Minimum Heat Capacity"
655        Method.Cmin  = min([Method.Ch,Method.Cc]);
656
657"Maximum Heat Capacity"
658        Method.Cmax  = max([Method.Ch,Method.Cc]);
659
660"Thermal Capacity Ratio"
661        Method.Cr    = Method.Cmin/Method.Cmax;
662
663if Method.Cr equal 0
664       
665        then   
666"Effectiveness"
667        Method.Eft = 1-exp(-Method.NTU);
668       
669        else
670
671switch  FlowDirection
672
673        case "cocurrent":
674       
675"Effectiveness in Cocurrent Flow"
676        Method.Eft = (1-exp(-Method.NTU*(1+Method.Cr)))/(1+Method.Cr);
677
678        case "counter":
679
680if Method.Cr equal 1
681       
682        then
683       
684"Effectiveness in Counter Flow"
685        Method.Eft = Method.NTU/(1+Method.NTU);
686       
687        else
688       
689"Effectiveness in Counter Flow"
690        Method.Eft = (1-exp(-Method.NTU*(1-Method.Cr)))/(1-Method.Cr*exp(-Method.NTU*(1-Method.Cr)));
691       
692end
693
694end
695
696end
697
698        case "Simplified":
699
700"Number of Units Transference"
701        Method.NTU = 1;
702       
703"Minimum Heat Capacity"
704        Method.Cmin  = min([Method.Ch,Method.Cc]);
705
706"Maximum Heat Capacity"
707        Method.Cmax  = max([Method.Ch,Method.Cc]);
708
709"Thermal Capacity Ratio"
710        Method.Cr    = 1;
711       
712"Effectiveness"
713        Method.Eft = Eftestimated;
714       
715end
716
717switch HotSide
718       
719        case "outer":
720
721switch CalculationApproach
722       
723        case "Full":
724       
725"Duty"
726        Details.Q       = Method.Eft*Method.Cmin*(InletOuter.T-InletInner.T);
727
728        case "Simplified":
729       
730"Duty"
731        Details.Q       = Qestimated;
732
733end
734
735"Hot Stream Heat Capacity"
736        Method.Ch  = InletOuter.F*Outer.Properties.Average.Cp;
737       
738"Cold Stream Heat Capacity"
739        Method.Cc = InletInner.F*Inner.Properties.Average.Cp;
740
741        when InletInner.T > InletOuter.T switchto "inner";
742       
743        case "inner":
744
745switch CalculationApproach
746       
747        case "Full":
748       
749"Duty"
750        Details.Q       = Method.Eft*Method.Cmin*(InletInner.T-InletOuter.T);
751
752        case "Simplified":
753
754"Duty"
755        Details.Q       = Qestimated;
756
757end
758
759"Cold Stream Heat Capacity"
760        Method.Cc = InletOuter.F*Outer.Properties.Average.Cp;
761       
762"Hot Stream Heat Capacity"
763        Method.Ch = InletInner.F*Inner.Properties.Average.Cp;
764       
765        when InletInner.T < InletOuter.T switchto "outer";
766       
767end
768
769end
770
771Model DoublePipe_LMTD as DoublePipe_Basic
772       
773ATTRIBUTES
774
775        Icon = "icon/DoublePipe";
776        Pallete = true;
777        Brief  = "Double Pipe Heat Exchanger - LMTD Method";
778        Info  =
779"Thermal analysis of double pipe heat exchanger using the LMTD Method.
780
781== Specify ==
782* The Inlet Inner stream
783* The Inlet Outer stream
784== Setting Parameters ==
785* Flow Direction:
786** counter flow
787** cocurrent flow (Default)
788* Heat Transfer Correlations:
789** Laminar flow
790*** Hausen (Default)
791*** Schlunder
792** Transition flow
793*** Gnielinski (Default)
794*** Hausen
795** Turbulent flow
796*** Petukhov (Default)
797*** Sieder Tate
798* Geometrical Parameters:
799** DoInner      - Outside Diameter of Inner Pipe
800** DiInner      - Inside Diameter of Inner Pipe
801** DiOuter      - Inside Diameter of Outer pipe
802** Lpipe                - Effective Tube Length of one segment of Pipe
803** Kwall                - Tube Wall Material Thermal Conductivity
804* Fouling:
805**Rfi   -       Inside Fouling Resistance
806**Rfo   -       Outside Fouling Resistance
807";
808
809PARAMETERS
810
811FlowDirection   as Switcher     (Brief="Flow Direction",Valid=["counter","cocurrent"],Default="cocurrent");
812       
813VARIABLES
814
815Method as LMTD_Basic    (Brief="LMTD Method of Calculation", Symbol=" ");
816
817EQUATIONS
818
819switch CalculationApproach
820       
821        case "Full":
822       
823"Duty"
824        Details.Q = Details.Ud*Geometry.Pi*Geometry.DoInner*Geometry.Lpipe*Method.LMTD;
825       
826        case "Simplified":
827       
828"Duty"
829        Details.Q = Qestimated;
830
831end
832
833"LMTD Correction Factor - True counter ou cocurrent flow"
834        Method.Fc = 1;
835
836switch HotSide
837       
838        case "outer":
839       
840switch FlowDirection
841
842        case "cocurrent":
843       
844"Temperature Difference at Inlet - Cocurrent Flow"
845        Method.DT0 = InletOuter.T - InletInner.T;
846
847"Temperature Difference at Outlet - Cocurrent Flow"
848        Method.DTL = OutletOuter.T - OutletInner.T;
849
850        case "counter":
851       
852"Temperature Difference at Inlet - Counter Flow"
853        Method.DT0 = InletOuter.T - OutletInner.T;
854
855"Temperature Difference at Outlet - Counter Flow"
856        Method.DTL = OutletOuter.T - InletInner.T;
857       
858
859end
860
861        when InletInner.T > InletOuter.T switchto "inner";
862       
863        case "inner":
864
865switch FlowDirection
866
867        case "cocurrent":
868       
869"Temperature Difference at Inlet - Cocurrent Flow"
870        Method.DT0 = InletInner.T - InletOuter.T;
871
872"Temperature Difference at Outlet - Cocurrent Flow"
873        Method.DTL = OutletInner.T - OutletOuter.T;
874       
875        case "counter":
876       
877"Temperature Difference at Inlet - Counter Flow"
878        Method.DT0 = InletInner.T - OutletOuter.T;
879
880"Temperature Difference at Outlet - Counter Flow"
881        Method.DTL = OutletInner.T - InletOuter.T;
882       
883end
884
885        when InletInner.T < InletOuter.T switchto "outer";
886
887end
888
889end
Note: See TracBrowser for help on using the repository browser.