source: trunk/eml/heat_exchangers/DoublePipe.mso @ 419

Last change on this file since 419 was 408, checked in by gerson bicca, 16 years ago

a better formulation on effectiveness equation to solve convergence problems

  • Property svn:keywords set to Id
File size: 51.0 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 408 2007-11-19 16:45:03Z bicca $
17*------------------------------------------------------------------*#
18
19using "HEX_Engine";
20
21
22Model DoublePipe_Basic
23
24ATTRIBUTES
25        Pallete         = false;
26        Brief           = "Basic Equations for rigorous double pipe heat exchanger model.";
27        Info            =
28        "to be documented.";
29
30PARAMETERS
31
32outer PP            as Plugin           (Brief="External Physical Properties", Type="PP");
33outer NComp     as Integer      (Brief="Number of Components");
34       
35        M(NComp)        as molweight    (Brief="Component Mol Weight");
36       
37        HotSide                         as Switcher             (Brief="Flag for Fluid Alocation ",Valid=["outer","inner"],Default="outer");
38        innerFlowRegime         as Switcher     (Brief="Inner Flow Regime ",Valid=["laminar","transition","turbulent"],Default="laminar");
39        outerFlowRegime         as Switcher     (Brief="Outer Flow Regime ",Valid=["laminar","transition","turbulent"],Default="laminar");
40
41        InnerLaminarCorrelation         as Switcher     (Brief="Heat Transfer Correlation in Laminar Flow for the Inner Side",Valid=["Hausen","Schlunder"],Default="Hausen");
42        InnerTransitionCorrelation  as Switcher         (Brief="Heat Transfer Correlation in Transition Flow for the Inner Side",Valid=["Gnielinski","Hausen"],Default="Gnielinski");
43        InnerTurbulentCorrelation   as Switcher (Brief="Heat Transfer Correlation in Turbulent Flow for the Inner Side",Valid=["Petukhov","SiederTate"],Default="Petukhov");
44
45        OuterLaminarCorrelation         as Switcher             (Brief="Heat Transfer Correlation in Laminar Flow for the Outer Side",Valid=["Hausen","Schlunder"],Default="Hausen");
46        OuterTransitionCorrelation  as Switcher         (Brief="Heat Transfer Correlation in Transition Flow for the OuterSide",Valid=["Gnielinski","Hausen"],Default="Gnielinski");
47        OuterTurbulentCorrelation   as Switcher         (Brief="Heat Transfer Correlation in Turbulent Flow for the Outer Side",Valid=["Petukhov","SiederTate"],Default="Petukhov");
48
49        Pi                              as constant             (Brief="Pi Number",Default=3.14159265, Symbol = "\pi");
50        DoInner         as length                       (Brief="Outside Diameter of Inner Pipe",Lower=1e-6);
51        DiInner as length                       (Brief="Inside Diameter of Inner Pipe",Lower=1e-10);
52        DiOuter as length                       (Brief="Inside Diameter of Outer pipe",Lower=1e-10);
53        Lpipe           as length                       (Brief="Effective Tube Length of one segment of Pipe",Lower=0.1, Symbol = "L_{pipe}");
54        Kwall           as conductivity         (Brief="Tube Wall Material Thermal Conductivity",Default=1.0, Symbol = "K_{wall}");
55        Rfi                     as positive                     (Brief="Inside Fouling Resistance",Unit='m^2*K/kW',Default=1e-6,Lower=0);
56        Rfo                     as positive                     (Brief="Outside Fouling Resistance",Unit='m^2*K/kW',Default=1e-6,Lower=0);
57
58VARIABLES
59
60in  InletInner          as stream               (Brief="Inlet Inner Stream", PosX=0, PosY=0.5225, Symbol="_{inInner}");
61in  InletOuter          as stream               (Brief="Inlet Outer Stream", PosX=0.2805, PosY=0, Symbol="_{inOuter}");
62out OutletInner         as streamPH     (Brief="Outlet Inner Stream", PosX=1, PosY=0.5225, Symbol="_{outInner}");
63out OutletOuter         as streamPH     (Brief="Outlet Outer Stream", PosX=0.7264, PosY=1, Symbol="_{outOuter}");
64
65        Details         as Details_Main         (Brief="Some Details in the Heat Exchanger", Symbol=" ");
66        Inner                   as Main_DoublePipe      (Brief="Inner Side of the Heat Exchanger", Symbol="_{Inner}");
67        Outer                   as Main_DoublePipe      (Brief="Outer Side of the Heat Exchanger", Symbol="_{Outer}");
68
69SET
70
71#"Component Molecular Weight"
72        M  = PP.MolecularWeight();
73       
74#"Pi Number"
75        Pi      = 3.14159265;
76       
77#"Inner Pipe Cross Sectional Area for Flow"
78        Inner.HeatTransfer.As=Pi*DiInner*DiInner/4;
79       
80#"Outer Pipe Cross Sectional Area for Flow"
81        Outer.HeatTransfer.As=Pi*(DiOuter*DiOuter - DoInner*DoInner)/4;
82       
83#"Inner Pipe Hydraulic Diameter for Heat Transfer"
84        Inner.HeatTransfer.Dh=DiInner;
85       
86#"Outer Pipe Hydraulic Diameter for Heat Transfer"
87        Outer.HeatTransfer.Dh=(DiOuter*DiOuter-DoInner*DoInner)/DoInner;
88
89#"Inner Pipe Hydraulic Diameter for Pressure Drop"
90        Inner.PressureDrop.Dh=DiInner;
91       
92#"Outer Pipe Hydraulic Diameter for Pressure Drop"
93        Outer.PressureDrop.Dh=DiOuter-DoInner;
94
95EQUATIONS
96
97"Outer  Stream Average Temperature"
98        Outer.Properties.Average.T = 0.5*InletOuter.T + 0.5*OutletOuter.T;
99
100"Inner Stream Average Temperature"
101        Inner.Properties.Average.T = 0.5*InletInner.T + 0.5*OutletInner.T;
102       
103"Outer Stream Average Pressure"
104        Outer.Properties.Average.P = 0.5*InletOuter.P+0.5*OutletOuter.P;
105       
106"Inner Stream Average Pressure"
107        Inner.Properties.Average.P = 0.5*InletInner.P+0.5*OutletInner.P;
108
109"Inner Stream Wall Temperature"
110        Inner.Properties.Wall.Twall =   0.5*Outer.Properties.Average.T + 0.5*Inner.Properties.Average.T;
111
112"Outer Stream Wall Temperature"
113        Outer.Properties.Wall.Twall =   0.5*Outer.Properties.Average.T + 0.5*Inner.Properties.Average.T;
114
115"Outer Stream Average Molecular Weight"
116        Outer.Properties.Average.Mw = sum(M*InletOuter.z);
117
118"Inner Stream Average Molecular Weight"
119        Inner.Properties.Average.Mw = sum(M*InletInner.z);
120
121if InletInner.v equal 0
122       
123        then   
124
125"Average Heat Capacity Inner Stream"
126        Inner.Properties.Average.Cp             =       PP.LiquidCp(Inner.Properties.Average.T,Inner.Properties.Average.P,InletInner.z);
127
128"Inlet Heat Capacity Inner Stream"
129        Inner.Properties.Inlet.Cp                       =       PP.LiquidCp(InletInner.T,InletInner.P,InletInner.z);
130
131"Outlet Heat Capacity Inner Stream"
132        Inner.Properties.Outlet.Cp              =       PP.LiquidCp(OutletInner.T,OutletInner.P,OutletInner.z);
133
134"Average Mass Density Inner Stream"
135        Inner.Properties.Average.rho    =       PP.LiquidDensity(Inner.Properties.Average.T,Inner.Properties.Average.P,InletInner.z);
136
137"Inlet Mass Density Inner Stream"
138        Inner.Properties.Inlet.rho              =       PP.LiquidDensity(InletInner.T,InletInner.P,InletInner.z);
139
140"Outlet Mass Density Inner Stream"
141        Inner.Properties.Outlet.rho     =       PP.LiquidDensity(OutletInner.T,OutletInner.P,OutletInner.z);
142
143"Average Viscosity Inner Stream"
144        Inner.Properties.Average.Mu     =       PP.LiquidViscosity(Inner.Properties.Average.T,Inner.Properties.Average.P,InletInner.z);
145
146"Inlet  Viscosity Inner Stream"
147        Inner.Properties.Inlet.Mu               =       PP.LiquidViscosity(InletInner.T,InletInner.P,InletInner.z);
148
149"Outlet Viscosity Inner Stream"
150        Inner.Properties.Outlet.Mu      =       PP.LiquidViscosity(OutletInner.T,OutletInner.P,OutletInner.z);
151
152"Average        Conductivity Inner Stream"
153        Inner.Properties.Average.K              =       PP.LiquidThermalConductivity(Inner.Properties.Average.T,Inner.Properties.Average.P,InletInner.z);
154
155"Inlet  Conductivity Inner Stream"
156        Inner.Properties.Inlet.K                =       PP.LiquidThermalConductivity(InletInner.T,InletInner.P,InletInner.z);
157
158"Outlet Conductivity Inner Stream"
159        Inner.Properties.Outlet.K               =       PP.LiquidThermalConductivity(OutletInner.T,OutletInner.P,OutletInner.z);
160
161"Viscosity Inner Stream at wall temperature"
162        Inner.Properties.Wall.Mu                =       PP.LiquidViscosity(Inner.Properties.Wall.Twall,Inner.Properties.Average.P,InletInner.z);
163
164        else
165
166"Average Heat Capacity InnerStream"
167        Inner.Properties.Average.Cp     =       PP.VapourCp(Inner.Properties.Average.T,Inner.Properties.Average.P,InletInner.z);
168
169"Inlet Heat Capacity Inner Stream"
170        Inner.Properties.Inlet.Cp               =       PP.VapourCp(InletInner.T,InletInner.P,InletInner.z);
171
172"Outlet Heat Capacity Inner Stream"
173        Inner.Properties.Outlet.Cp      =       PP.VapourCp(OutletInner.T,OutletInner.P,OutletInner.z);
174
175"Average Mass Density Inner Stream"
176        Inner.Properties.Average.rho    =       PP.VapourDensity(Inner.Properties.Average.T,Inner.Properties.Average.P,InletInner.z);
177
178"Inlet Mass Density Inner Stream"
179        Inner.Properties.Inlet.rho              =       PP.VapourDensity(InletInner.T,InletInner.P,InletInner.z);
180       
181"Outlet Mass Density Inner Stream"
182        Inner.Properties.Outlet.rho     =       PP.VapourDensity(OutletInner.T,OutletInner.P,OutletInner.z);
183
184"Average Viscosity Inner Stream"
185        Inner.Properties.Average.Mu     =       PP.VapourViscosity(Inner.Properties.Average.T,Inner.Properties.Average.P,InletInner.z);
186
187"Inlet Viscosity Inner Stream"
188        Inner.Properties.Inlet.Mu               =       PP.VapourViscosity(InletInner.T,InletInner.P,InletInner.z);
189
190"Outlet Viscosity Inner Stream"
191        Inner.Properties.Outlet.Mu      =       PP.VapourViscosity(OutletInner.T,OutletInner.P,OutletInner.z);
192
193"Average Conductivity Inner Stream"
194        Inner.Properties.Average.K              =       PP.VapourThermalConductivity(Inner.Properties.Average.T,Inner.Properties.Average.P,InletInner.z);
195
196"Inlet Conductivity Inner Stream"
197        Inner.Properties.Inlet.K                =       PP.VapourThermalConductivity(InletInner.T,InletInner.P,InletInner.z);
198
199"Outlet Conductivity Inner Stream"
200        Inner.Properties.Outlet.K               =       PP.VapourThermalConductivity(OutletInner.T,OutletInner.P,OutletInner.z);
201       
202"Viscosity Inner Stream at wall temperature"
203        Inner.Properties.Wall.Mu                =       PP.VapourViscosity(Inner.Properties.Wall.Twall,Inner.Properties.Average.P,InletInner.z);
204
205end
206
207if InletOuter.v equal 0
208
209        then
210
211"Average Heat Capacity Outer Stream"
212        Outer.Properties.Average.Cp     =               PP.LiquidCp(Outer.Properties.Average.T,Outer.Properties.Average.P,InletOuter.z);
213
214"Inlet Heat Capacity Outer Stream"
215        Outer.Properties.Inlet.Cp               =               PP.LiquidCp(InletOuter.T,InletOuter.P,InletOuter.z);
216
217"Outlet Heat Capacity Outer Stream"
218        Outer.Properties.Outlet.Cp      =               PP.LiquidCp(OutletOuter.T,OutletOuter.P,OutletOuter.z);
219
220"Average Mass Density Outer Stream"
221        Outer.Properties.Average.rho =          PP.LiquidDensity(Outer.Properties.Average.T,Outer.Properties.Average.P,InletOuter.z);
222
223"Inlet Mass Density Outer Stream"
224        Outer.Properties.Inlet.rho              =               PP.LiquidDensity(InletOuter.T,InletOuter.P,InletOuter.z);
225
226"Outlet Mass Density Outer Stream"
227        Outer.Properties.Outlet.rho     =               PP.LiquidDensity(OutletOuter.T,OutletOuter.P,OutletOuter.z);
228
229"Average Viscosity Outer Stream"
230        Outer.Properties.Average.Mu     =               PP.LiquidViscosity(Outer.Properties.Average.T,Outer.Properties.Average.P,InletOuter.z);
231
232"Inlet Viscosity Outer Stream"
233        Outer.Properties.Inlet.Mu       =               PP.LiquidViscosity(InletOuter.T,InletOuter.P,InletOuter.z);     
234
235"Outlet Viscosity Outer Stream"
236        Outer.Properties.Outlet.Mu      =               PP.LiquidViscosity(OutletOuter.T,OutletOuter.P,OutletOuter.z); 
237
238"Average Conductivity Outer Stream"
239        Outer.Properties.Average.K      =               PP.LiquidThermalConductivity(Outer.Properties.Average.T,Outer.Properties.Average.P,InletOuter.z);       
240
241"Inlet Conductivity Outer Stream"
242        Outer.Properties.Inlet.K                =               PP.LiquidThermalConductivity(InletOuter.T,InletOuter.P,InletOuter.z);   
243
244"Outlet Conductivity Outer Stream"
245        Outer.Properties.Outlet.K       =               PP.LiquidThermalConductivity(OutletOuter.T,OutletOuter.P,OutletOuter.z);       
246
247"Viscosity Outer Stream at wall temperature"
248        Outer.Properties.Wall.Mu                =               PP.LiquidViscosity(Outer.Properties.Wall.Twall,Outer.Properties.Average.P,InletOuter.z);       
249
250
251        else
252
253"Average Heat Capacity Outer Stream"
254        Outer.Properties.Average.Cp     =               PP.VapourCp(Outer.Properties.Average.T,Outer.Properties.Average.P,InletOuter.z);
255
256"Inlet Heat Capacity Outer Stream"
257        Outer.Properties.Inlet.Cp               =               PP.VapourCp(InletOuter.T,InletOuter.P,InletOuter.z);
258
259"Outlet Heat Capacity Outer Stream"
260        Outer.Properties.Outlet.Cp      =               PP.VapourCp(OutletOuter.T,OutletOuter.P,OutletOuter.z);
261
262"Average Mass Density Outer Stream"
263        Outer.Properties.Average.rho =          PP.VapourDensity(Outer.Properties.Average.T,Outer.Properties.Average.P,InletOuter.z);
264
265"Inlet Mass Density Outer Stream"
266        Outer.Properties.Inlet.rho              =               PP.VapourDensity(InletOuter.T,InletOuter.P,InletOuter.z);
267       
268"Outlet Mass Density Outer Stream"
269        Outer.Properties.Outlet.rho     =               PP.VapourDensity(OutletOuter.T,OutletOuter.P,OutletOuter.z);
270
271"Average Viscosity Outer Stream"
272        Outer.Properties.Average.Mu     =               PP.VapourViscosity(Outer.Properties.Average.T,Outer.Properties.Average.P,InletOuter.z);
273
274"Inlet Viscosity Outer Stream"
275        Outer.Properties.Inlet.Mu       =               PP.VapourViscosity(InletOuter.T,InletOuter.P,InletOuter.z);
276
277"Outlet Viscosity Outer Stream"
278        Outer.Properties.Outlet.Mu      =               PP.VapourViscosity(OutletOuter.T,OutletOuter.P,OutletOuter.z);
279
280"Average Conductivity Outer Stream"
281        Outer.Properties.Average.K      =               PP.VapourThermalConductivity(Outer.Properties.Average.T,Outer.Properties.Average.P,InletOuter.z);       
282
283"Inlet Conductivity Outer Stream"
284        Outer.Properties.Inlet.K                =               PP.VapourThermalConductivity(InletOuter.T,InletOuter.P,InletOuter.z);   
285
286"Outlet Conductivity Outer Stream"
287        Outer.Properties.Outlet.K       =               PP.VapourThermalConductivity(OutletOuter.T,OutletOuter.P,OutletOuter.z);       
288
289"Viscosity Outer Stream at wall temperature"
290        Outer.Properties.Wall.Mu                =               PP.VapourViscosity(Outer.Properties.Wall.Twall,Outer.Properties.Average.P,InletOuter.z);
291
292end
293
294switch HotSide
295       
296        case "outer":
297
298"Energy Balance Outer Stream"
299        Details.Q = InletOuter.F*(InletOuter.h-OutletOuter.h);
300
301"Energy Balance Inner Stream"
302        Details.Q = InletInner.F*(OutletInner.h-InletInner.h);
303
304        when InletInner.T > InletOuter.T switchto "inner";
305
306case "inner":
307
308"Energy Balance Hot Stream"
309        Details.Q = InletInner.F*(InletInner.h-OutletInner.h);
310
311"Energy Balance Cold Stream"
312        Details.Q = InletOuter.F*(OutletOuter.h - InletOuter.h);
313
314        when InletInner.T < InletOuter.T switchto "outer";
315
316end
317
318"Flow Mass Inlet Inner Stream"
319        Inner.Properties.Inlet.Fw       =  sum(M*InletInner.z)*InletInner.F;
320
321"Flow Mass Outlet Inner Stream"
322        Inner.Properties.Outlet.Fw      =  sum(M*OutletInner.z)*OutletInner.F;
323
324"Flow Mass Inlet Outer Stream"
325        Outer.Properties.Inlet.Fw               =  sum(M*InletOuter.z)*InletOuter.F;
326
327"Flow Mass Outlet Outer Stream"
328        Outer.Properties.Outlet.Fw      =  sum(M*OutletOuter.z)*OutletOuter.F;
329
330"Molar Balance Outer Stream"
331        OutletOuter.F = InletOuter.F;
332       
333"Molar Balance Inner Stream"
334        OutletInner.F = InletInner.F;
335
336"Outer Stream Molar Fraction Constraint"
337        OutletOuter.z=InletOuter.z;
338       
339"InnerStream Molar Fraction Constraint"
340        OutletInner.z=InletInner.z;
341
342"Exchange Surface Area for one segment of pipe"
343        Details.A=Pi*DoInner*Lpipe;
344
345switch innerFlowRegime
346       
347        case "laminar":
348       
349"Inner Side Friction Factor for Pressure Drop - laminar Flow"
350        Inner.PressureDrop.fi*Inner.PressureDrop.Re = 16;
351       
352        when Inner.PressureDrop.Re > 2300 switchto "transition";
353
354        case "transition":
355       
356"using Turbulent Flow - to be implemented"
357        (Inner.PressureDrop.fi-0.0035)*(Inner.PressureDrop.Re^0.42) = 0.264;
358
359        when Inner.PressureDrop.Re < 2300 switchto "laminar";
360        when Inner.PressureDrop.Re > 10000 switchto "turbulent";
361
362        case "turbulent":
363
364"Inner Side Friction Factor - Turbulent Flow"
365        (Inner.PressureDrop.fi-0.0035)*(Inner.PressureDrop.Re^0.42) = 0.264;
366
367        when Inner.PressureDrop.Re < 10000 switchto "transition";
368       
369end     
370
371switch outerFlowRegime
372       
373        case "laminar":
374       
375"Outer Side Friction Factor - laminar Flow"
376        Outer.PressureDrop.fi*Outer.PressureDrop.Re = 16;
377       
378        when Outer.PressureDrop.Re > 2300 switchto "transition";
379
380        case "transition":
381       
382"using Turbulent Flow - Transition Flow must be implemented"
383        (Outer.PressureDrop.fi-0.0035)*(Outer.PressureDrop.Re^0.42) = 0.264;
384
385        when Outer.PressureDrop.Re < 2300 switchto "laminar";
386        when Outer.PressureDrop.Re > 10000 switchto "turbulent";
387
388        case "turbulent":
389
390"Outer Side Friction Factor - Turbulent Flow"
391        (Outer.PressureDrop.fi-0.0035)*(Outer.PressureDrop.Re^0.42) = 0.264;
392
393        when Outer.PressureDrop.Re < 10000 switchto "transition";
394       
395end
396
397switch innerFlowRegime
398       
399        case "laminar":
400       
401"Inner Side Friction Factor for Heat Transfer - laminar Flow"
402        Inner.HeatTransfer.fi   = 1/(0.79*ln(Inner.HeatTransfer.Re)-1.64)^2;
403       
404switch InnerLaminarCorrelation
405       
406        case "Hausen":
407
408"Nusselt Number"
409        Inner.HeatTransfer.Nu = 3.665 + ((0.19*((DiInner/Lpipe)*Inner.HeatTransfer.Re*Inner.HeatTransfer.PR)^0.8)/(1+0.117*((DiInner/Lpipe)*Inner.HeatTransfer.Re*Inner.HeatTransfer.PR)^0.467));
410       
411        case "Schlunder":
412
413"Nusselt Number"
414        Inner.HeatTransfer.Nu = (49.027896+4.173281*Inner.HeatTransfer.Re*Inner.HeatTransfer.PR*(DiInner/Lpipe))^(1/3);
415
416end
417       
418        when Inner.HeatTransfer.Re > 2300 switchto "transition";
419       
420        case "transition":
421       
422"Inner Side Friction Factor for Heat Transfer - transition Flow"
423        Inner.HeatTransfer.fi   = 1/(0.79*ln(Inner.HeatTransfer.Re)-1.64)^2;
424       
425switch InnerTransitionCorrelation
426       
427        case "Gnielinski":
428       
429"Nusselt Number"
430        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;
431
432        case "Hausen":
433
434"Nusselt Number"
435        Inner.HeatTransfer.Nu =0.116*(Inner.HeatTransfer.Re^(0.667)-125)*Inner.HeatTransfer.PR^(0.333)*(1+(DiInner/Lpipe)^0.667);
436       
437end
438
439        when Inner.HeatTransfer.Re < 2300 switchto "laminar";
440        when Inner.HeatTransfer.Re > 10000 switchto "turbulent";
441
442        case "turbulent":
443
444switch InnerTurbulentCorrelation
445       
446        case "Petukhov":
447       
448"Inner Side Friction Factor for Heat Transfer - turbulent Flow"
449        Inner.HeatTransfer.fi   = 1/(1.82*log(Inner.HeatTransfer.Re)-1.64)^2;
450
451"Nusselt Number"
452        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;
453       
454        case "SiederTate":
455
456"Nusselt Number"
457        Inner.HeatTransfer.Nu = 0.027*(Inner.HeatTransfer.PR)^(1/3)*(Inner.HeatTransfer.Re)^(4/5);
458
459"Inner Side Friction Factor for Heat Transfer - turbulent Flow"
460        Inner.HeatTransfer.fi   = 1/(1.82*log(Inner.HeatTransfer.Re)-1.64)^2;
461       
462end
463       
464        when Inner.HeatTransfer.Re < 10000 switchto "transition";
465       
466end
467
468switch outerFlowRegime
469       
470        case "laminar":
471       
472"Outer Side Friction Factor for Heat Transfer - laminar Flow"
473        Outer.HeatTransfer.fi   = 1/(0.79*ln(Outer.HeatTransfer.Re)-1.64)^2;
474       
475switch OuterLaminarCorrelation
476       
477        case "Hausen":
478
479"Nusselt Number"
480        Outer.HeatTransfer.Nu = 3.665 + ((0.19*((Outer.HeatTransfer.Dh/Lpipe)*Outer.HeatTransfer.Re*Outer.HeatTransfer.PR)^0.8)/(1+0.117*((Outer.HeatTransfer.Dh/Lpipe)*Outer.HeatTransfer.Re*Outer.HeatTransfer.PR)^0.467));
481       
482        case "Schlunder":
483
484"Nusselt Number"
485        Outer.HeatTransfer.Nu = (49.027896+4.173281*Outer.HeatTransfer.Re*Outer.HeatTransfer.PR*(Outer.HeatTransfer.Dh/Lpipe))^(1/3);
486
487end
488       
489        when Outer.HeatTransfer.Re > 2300 switchto "transition";
490       
491        case "transition":
492       
493switch OuterTransitionCorrelation
494       
495        case "Gnielinski":
496
497"Outer Side Friction Factor for Heat Transfer - transition Flow"
498        Outer.HeatTransfer.fi   = 1/(0.79*ln(Outer.HeatTransfer.Re)-1.64)^2;
499
500"Nusselt Number"
501        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;
502
503        case "Hausen":
504
505"Nusselt Number"
506        Outer.HeatTransfer.Nu = 0.116*(Outer.HeatTransfer.Re^(0.667)-125)*Outer.HeatTransfer.PR^(0.333)*(1+(Outer.HeatTransfer.Dh/Lpipe)^0.667);
507
508
509"Outer Side Friction Factor for Heat Transfer - transition Flow"
510        Outer.HeatTransfer.fi   = 1/(0.79*ln(Outer.HeatTransfer.Re)-1.64)^2;
511       
512end
513       
514        when Outer.HeatTransfer.Re < 2300 switchto "laminar";
515        when Outer.HeatTransfer.Re > 10000 switchto "turbulent";
516       
517        case "turbulent":
518       
519switch OuterTurbulentCorrelation
520       
521        case "Petukhov":
522
523"Outer Side Friction Factor for Heat Transfer - turbulent Flow"
524        Outer.HeatTransfer.fi   = 1/(1.82*log(Outer.HeatTransfer.Re)-1.64)^2;
525       
526"Nusselt Number"
527        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;
528       
529        case "SiederTate":
530
531"Nusselt Number"
532        Outer.HeatTransfer.Nu = 0.027*(Outer.HeatTransfer.PR)^(1/3)*(Outer.HeatTransfer.Re)^(4/5);
533
534"Outer Side Friction Factor for Heat Transfer - turbulent Flow"
535        Outer.HeatTransfer.fi   = 1/(1.82*log(Outer.HeatTransfer.Re)-1.64)^2;
536       
537end
538
539        when Outer.HeatTransfer.Re < 10000 switchto "transition";
540
541end
542
543"Inner Pipe Film Coefficient"
544        Inner.HeatTransfer.hcoeff = (Inner.HeatTransfer.Nu*Inner.Properties.Average.K/DiInner)*Inner.HeatTransfer.Phi;
545
546"Outer Pipe Film Coefficient"
547        Outer.HeatTransfer.hcoeff= (Outer.HeatTransfer.Nu*Outer.Properties.Average.K/Outer.HeatTransfer.Dh)*Outer.HeatTransfer.Phi;
548
549"Total Pressure Drop Outer Stream"
550        Outer.PressureDrop.Pdrop  = Outer.PressureDrop.Pd_fric+Outer.PressureDrop.Pd_ret;
551
552"Total Pressure Drop Inner Stream"
553        Inner.PressureDrop.Pdrop  = Inner.PressureDrop.Pd_fric+Inner.PressureDrop.Pd_ret;
554       
555"Pressure Drop Outer Stream"
556        OutletOuter.P  = InletOuter.P - Outer.PressureDrop.Pdrop;
557
558"Pressure Drop Inner Stream"
559        OutletInner.P  = InletInner.P - Inner.PressureDrop.Pdrop;
560       
561"Outer Pipe Pressure Drop for friction"
562        Outer.PressureDrop.Pd_fric = (2*Outer.PressureDrop.fi*Lpipe*Outer.Properties.Average.rho*Outer.HeatTransfer.Vmean^2)/(Outer.PressureDrop.Dh*Outer.HeatTransfer.Phi);
563       
564"Inner Pipe Pressure Drop for friction"
565        Inner.PressureDrop.Pd_fric = (2*Inner.PressureDrop.fi*Lpipe*Inner.Properties.Average.rho*Inner.HeatTransfer.Vmean^2)/(DiInner*Inner.HeatTransfer.Phi);
566
567"Outer Pipe Pressure Drop due to return"
568        Outer.PressureDrop.Pd_ret = 0*'kPa';
569
570"Inner Pipe Pressure Drop due to return"
571        Inner.PressureDrop.Pd_ret = 0*'kPa';
572
573"Outer Pipe Phi correction"
574        Outer.HeatTransfer.Phi = (Outer.Properties.Average.Mu/Outer.Properties.Wall.Mu)^0.14;
575       
576"Inner Pipe Phi correction"
577        Inner.HeatTransfer.Phi  = (Inner.Properties.Average.Mu/Inner.Properties.Wall.Mu)^0.14;
578
579"Outer Pipe Prandtl Number"
580        Outer.HeatTransfer.PR = ((Outer.Properties.Average.Cp/Outer.Properties.Average.Mw)*Outer.Properties.Average.Mu)/Outer.Properties.Average.K;
581
582"Inner Pipe Prandtl Number"
583        Inner.HeatTransfer.PR = ((Inner.Properties.Average.Cp/Inner.Properties.Average.Mw)*Inner.Properties.Average.Mu)/Inner.Properties.Average.K;
584
585"Outer Pipe Reynolds Number for Heat Transfer"
586        Outer.HeatTransfer.Re = (Outer.Properties.Average.rho*Outer.HeatTransfer.Vmean*Outer.HeatTransfer.Dh)/Outer.Properties.Average.Mu;
587
588"Outer Pipe Reynolds Number for Pressure Drop"
589        Outer.PressureDrop.Re = (Outer.Properties.Average.rho*Outer.HeatTransfer.Vmean*Outer.PressureDrop.Dh)/Outer.Properties.Average.Mu;
590
591"Inner Pipe Reynolds Number for Heat Transfer"
592        Inner.HeatTransfer.Re = (Inner.Properties.Average.rho*Inner.HeatTransfer.Vmean*Inner.HeatTransfer.Dh)/Inner.Properties.Average.Mu;
593
594"Inner Pipe Reynolds Number for Pressure Drop"
595        Inner.PressureDrop.Re = Inner.HeatTransfer.Re;
596
597"Outer Pipe Velocity"
598        Outer.HeatTransfer.Vmean*(Outer.HeatTransfer.As*Outer.Properties.Average.rho)  = Outer.Properties.Inlet.Fw;
599
600"Inner Pipe Velocity"
601        Inner.HeatTransfer.Vmean*(Inner.HeatTransfer.As*Inner.Properties.Average.rho)  = Inner.Properties.Inlet.Fw;
602
603"Overall Heat Transfer Coefficient Clean"
604        Details.Uc*((DoInner/(Inner.HeatTransfer.hcoeff*DiInner) )+(DoInner*ln(DoInner/DiInner)/(2*Kwall))+(1/(Outer.HeatTransfer.hcoeff)))=1;
605
606"Overall Heat Transfer Coefficient Dirty"
607        Details.Ud*(Rfi*(DoInner/DiInner) +  Rfo + (DoInner/(Inner.HeatTransfer.hcoeff*DiInner) )+(DoInner*ln(DoInner/DiInner)/(2*Kwall))+(1/(Outer.HeatTransfer.hcoeff)))=1;
608
609end
610
611Model DoublePipe_NTU as DoublePipe_Basic
612
613ATTRIBUTES
614
615        Icon = "icon/DoublePipe";
616        Pallete = true;
617        Brief  = "Double Pipe Heat Exchanger - NTU Method";
618        Info  =
619        "to be documented.";
620
621PARAMETERS
622
623FlowDirection   as Switcher     (Brief="Flow Direction",Valid=["counter","cocurrent"],Default="cocurrent");
624       
625VARIABLES
626
627Method as NTU_Basic     (Brief="NTU Method of Calculation", Symbol=" ");
628
629EQUATIONS
630
631"Number of Units Transference"
632        Method.NTU*Method.Cmin = Details.Ud*Pi*DoInner*Lpipe;
633       
634"Minimum Heat Capacity"
635        Method.Cmin  = min([Method.Ch,Method.Cc]);
636
637"Maximum Heat Capacity"
638        Method.Cmax  = max([Method.Ch,Method.Cc]);
639
640"Thermal Capacity Ratio"
641        Method.Cr    = Method.Cmin/Method.Cmax;
642
643"Effectiveness Correction"
644        Method.Eft1 = 1;
645
646if Method.Cr equal 0
647       
648        then   
649"Effectiveness"
650        Method.Eft = 1-exp(-Method.NTU);
651       
652        else
653
654switch  FlowDirection
655
656        case "cocurrent":
657       
658"Effectiveness in Cocurrent Flow"
659        Method.Eft = (1-exp(-Method.NTU*(1+Method.Cr)))/(1+Method.Cr);
660
661        case "counter":
662
663if Method.Cr equal 1
664       
665        then
666       
667"Effectiveness in Counter Flow"
668        Method.Eft = Method.NTU/(1+Method.NTU);
669       
670        else
671       
672"Effectiveness in Counter Flow"
673        Method.Eft = (1-exp(-Method.NTU*(1-Method.Cr)))/(1-Method.Cr*exp(-Method.NTU*(1-Method.Cr)));
674       
675end
676
677end
678
679end
680
681switch HotSide
682       
683        case "outer":
684
685"Duty"
686        Details.Q       = Method.Eft*Method.Cmin*(InletOuter.T-InletInner.T);
687
688"Hot Stream Heat Capacity"
689        Method.Ch  = InletOuter.F*Outer.Properties.Average.Cp;
690       
691"Cold Stream Heat Capacity"
692        Method.Cc = InletInner.F*Inner.Properties.Average.Cp;
693
694        when InletInner.T > InletOuter.T switchto "inner";
695       
696        case "inner":
697
698"Duty"
699        Details.Q       = Method.Eft*Method.Cmin*(InletInner.T-InletOuter.T);
700
701"Cold Stream Heat Capacity"
702        Method.Cc = InletOuter.F*Outer.Properties.Average.Cp;
703       
704"Hot Stream Heat Capacity"
705        Method.Ch = InletInner.F*Inner.Properties.Average.Cp;
706       
707        when InletInner.T < InletOuter.T switchto "outer";
708       
709end
710
711end
712
713Model DoublePipe_LMTD as DoublePipe_Basic
714       
715ATTRIBUTES
716
717        Icon = "icon/DoublePipe";
718        Pallete = true;
719        Brief  = "Double Pipe Heat Exchanger - LMTD Method";
720        Info  =
721        "to be documented.";
722
723PARAMETERS
724
725FlowDirection   as Switcher     (Brief="Flow Direction",Valid=["counter","cocurrent"],Default="cocurrent");
726       
727VARIABLES
728
729Method as LMTD_Basic    (Brief="LMTD Method of Calculation", Symbol=" ");
730
731EQUATIONS
732
733"Exchange Surface Area"
734        Details.Q = Details.Ud*Pi*DoInner*Lpipe*Method.LMTD;
735       
736"LMTD Correction Factor - True counter ou cocurrent flow"
737        Method.Fc = 1;
738
739switch HotSide
740       
741        case "outer":
742       
743switch FlowDirection
744
745        case "cocurrent":
746       
747"Temperature Difference at Inlet - Cocurrent Flow"
748        Method.DT0 = InletOuter.T - InletInner.T;
749
750"Temperature Difference at Outlet - Cocurrent Flow"
751        Method.DTL = OutletOuter.T - OutletInner.T;
752
753        case "counter":
754       
755"Temperature Difference at Inlet - Counter Flow"
756        Method.DT0 = InletOuter.T - OutletInner.T;
757
758"Temperature Difference at Outlet - Counter Flow"
759        Method.DTL = OutletOuter.T - InletInner.T;
760       
761
762end
763
764        when InletInner.T > InletOuter.T switchto "inner";
765       
766        case "inner":
767
768switch FlowDirection
769
770        case "cocurrent":
771       
772"Temperature Difference at Inlet - Cocurrent Flow"
773        Method.DT0 = InletInner.T - InletOuter.T;
774
775"Temperature Difference at Outlet - Cocurrent Flow"
776        Method.DTL = OutletInner.T - OutletOuter.T;
777       
778        case "counter":
779       
780"Temperature Difference at Inlet - Counter Flow"
781        Method.DT0 = InletInner.T - OutletOuter.T;
782
783"Temperature Difference at Outlet - Counter Flow"
784        Method.DTL = OutletInner.T - InletOuter.T;
785       
786end
787
788        when InletInner.T < InletOuter.T switchto "outer";
789
790end
791
792end
793
794# Testing Hairpin Heat Exchanger (U tube)
795
796Model Hairpin_Basic
797
798ATTRIBUTES
799        Pallete         = false;
800        Brief           = "Basic Equations for hairpin heat exchanger model.";
801        Info            =
802        "to be documented.";
803
804PARAMETERS
805
806outer PP            as Plugin           (Brief="External Physical Properties", Type="PP");
807outer NComp     as Integer      (Brief="Number of Components");
808       
809        M(NComp)        as molweight    (Brief="Component Mol Weight");
810       
811        HotSide                         as Switcher             (Brief="Flag for Fluid Alocation ",Valid=["outer","inner"],Default="outer");
812        innerFlowRegime         as Switcher     (Brief="Inner Flow Regime ",Valid=["laminar","transition","turbulent"],Default="laminar");
813        outerFlowRegime         as Switcher     (Brief="Outer Flow Regime ",Valid=["laminar","transition","turbulent"],Default="laminar");
814
815        InnerLaminarCorrelation         as Switcher     (Brief="Heat Transfer Correlation in Laminar Flow for the Inner Side",Valid=["Hausen","Schlunder"],Default="Hausen");
816        InnerTransitionCorrelation  as Switcher         (Brief="Heat Transfer Correlation in Transition Flow for the Inner Side",Valid=["Gnielinski","Hausen"],Default="Gnielinski");
817        InnerTurbulentCorrelation   as Switcher (Brief="Heat Transfer Correlation in Turbulent Flow for the Inner Side",Valid=["Petukhov","SiederTate"],Default="Petukhov");
818
819        OuterLaminarCorrelation         as Switcher             (Brief="Heat Transfer Correlation in Laminar Flow for the Outer Side",Valid=["Hausen","Schlunder"],Default="Hausen");
820        OuterTransitionCorrelation  as Switcher         (Brief="Heat Transfer Correlation in Transition Flow for the OuterSide",Valid=["Gnielinski","Hausen"],Default="Gnielinski");
821        OuterTurbulentCorrelation   as Switcher         (Brief="Heat Transfer Correlation in Turbulent Flow for the Outer Side",Valid=["Petukhov","SiederTate"],Default="Petukhov");
822
823        Pi                              as constant             (Brief="Pi Number",Default=3.14159265, Symbol = "\pi");
824        DoInner         as length                       (Brief="Outside Diameter of Inner Pipe",Lower=1e-6);
825        DiInner as length                       (Brief="Inside Diameter of Inner Pipe",Lower=1e-10);
826        DiOuter as length                       (Brief="Inside Diameter of Outer pipe",Lower=1e-10);
827        Lpipe           as length                       (Brief="Effective Tube Length of one segment of Pipe",Lower=0.1, Symbol = "L_{pipe}");
828        Kwall           as conductivity         (Brief="Tube Wall Material Thermal Conductivity",Default=1.0, Symbol = "K_{wall}");
829        Rfi                     as positive                     (Brief="Inside Fouling Resistance",Unit='m^2*K/kW',Default=1e-6,Lower=0);
830        Rfo                     as positive                     (Brief="Outside Fouling Resistance",Unit='m^2*K/kW',Default=1e-6,Lower=0);
831
832VARIABLES
833
834in  InletInner          as stream               (Brief="Inlet Inner Stream", PosX=1, PosY=0.7, Symbol="_{inInner}");   
835in  InletOuter          as stream               (Brief="Inlet Outer Stream", PosX=0.8, PosY=0, Symbol="_{inOuter}");
836out OutletInner         as streamPH     (Brief="Outlet Inner Stream", PosX=1, PosY=0.3, Symbol="_{outInner}");
837out OutletOuter         as streamPH     (Brief="Outlet Outer Stream", PosX=0.8, PosY=1, Symbol="_{outOuter}");
838
839        Details         as Details_Main         (Brief="Some Details in the Heat Exchanger", Symbol=" ");
840        Inner                   as Main_DoublePipe      (Brief="Inner Side of the Heat Exchanger", Symbol="_{Inner}");
841        Outer                   as Main_DoublePipe      (Brief="Outer Side of the Heat Exchanger", Symbol="_{Outer}");
842
843SET
844
845#"Component Molecular Weight"
846        M  = PP.MolecularWeight();
847       
848#"Pi Number"
849        Pi      = 3.14159265;
850       
851#"Inner Pipe Cross Sectional Area for Flow"
852        Inner.HeatTransfer.As=Pi*DiInner*DiInner/4;
853       
854#"Outer Pipe Cross Sectional Area for Flow"
855        Outer.HeatTransfer.As=Pi*(DiOuter*DiOuter - DoInner*DoInner)/4;
856       
857#"Inner Pipe Hydraulic Diameter for Heat Transfer"
858        Inner.HeatTransfer.Dh=DiInner;
859       
860#"Outer Pipe Hydraulic Diameter for Heat Transfer"
861        Outer.HeatTransfer.Dh=(DiOuter*DiOuter-DoInner*DoInner)/DoInner;
862
863#"Inner Pipe Hydraulic Diameter for Pressure Drop"
864        Inner.PressureDrop.Dh=DiInner;
865       
866#"Outer Pipe Hydraulic Diameter for Pressure Drop"
867        Outer.PressureDrop.Dh=DiOuter-DoInner;
868
869EQUATIONS
870
871"Outer  Stream Average Temperature"
872        Outer.Properties.Average.T = 0.5*InletOuter.T + 0.5*OutletOuter.T;
873
874"Inner Stream Average Temperature"
875        Inner.Properties.Average.T = 0.5*InletInner.T + 0.5*OutletInner.T;
876       
877"Outer Stream Average Pressure"
878        Outer.Properties.Average.P = 0.5*InletOuter.P+0.5*OutletOuter.P;
879       
880"Inner Stream Average Pressure"
881        Inner.Properties.Average.P = 0.5*InletInner.P+0.5*OutletInner.P;
882
883"Inner Stream Wall Temperature"
884        Inner.Properties.Wall.Twall =   0.5*Outer.Properties.Average.T + 0.5*Inner.Properties.Average.T;
885
886"Outer Stream Wall Temperature"
887        Outer.Properties.Wall.Twall =   0.5*Outer.Properties.Average.T + 0.5*Inner.Properties.Average.T;
888
889"Outer Stream Average Molecular Weight"
890        Outer.Properties.Average.Mw = sum(M*InletOuter.z);
891
892"Inner Stream Average Molecular Weight"
893        Inner.Properties.Average.Mw = sum(M*InletInner.z);
894
895if InletInner.v equal 0
896       
897        then   
898
899"Average Heat Capacity Inner Stream"
900        Inner.Properties.Average.Cp             =       PP.LiquidCp(Inner.Properties.Average.T,Inner.Properties.Average.P,InletInner.z);
901
902"Inlet Heat Capacity Inner Stream"
903        Inner.Properties.Inlet.Cp                       =       PP.LiquidCp(InletInner.T,InletInner.P,InletInner.z);
904
905"Outlet Heat Capacity Inner Stream"
906        Inner.Properties.Outlet.Cp              =       PP.LiquidCp(OutletInner.T,OutletInner.P,OutletInner.z);
907
908"Average Mass Density Inner Stream"
909        Inner.Properties.Average.rho    =       PP.LiquidDensity(Inner.Properties.Average.T,Inner.Properties.Average.P,InletInner.z);
910
911"Inlet Mass Density Inner Stream"
912        Inner.Properties.Inlet.rho              =       PP.LiquidDensity(InletInner.T,InletInner.P,InletInner.z);
913
914"Outlet Mass Density Inner Stream"
915        Inner.Properties.Outlet.rho     =       PP.LiquidDensity(OutletInner.T,OutletInner.P,OutletInner.z);
916
917"Average Viscosity Inner Stream"
918        Inner.Properties.Average.Mu     =       PP.LiquidViscosity(Inner.Properties.Average.T,Inner.Properties.Average.P,InletInner.z);
919
920"Inlet  Viscosity Inner Stream"
921        Inner.Properties.Inlet.Mu               =       PP.LiquidViscosity(InletInner.T,InletInner.P,InletInner.z);
922
923"Outlet Viscosity Inner Stream"
924        Inner.Properties.Outlet.Mu      =       PP.LiquidViscosity(OutletInner.T,OutletInner.P,OutletInner.z);
925
926"Average        Conductivity Inner Stream"
927        Inner.Properties.Average.K              =       PP.LiquidThermalConductivity(Inner.Properties.Average.T,Inner.Properties.Average.P,InletInner.z);
928
929"Inlet  Conductivity Inner Stream"
930        Inner.Properties.Inlet.K                =       PP.LiquidThermalConductivity(InletInner.T,InletInner.P,InletInner.z);
931
932"Outlet Conductivity Inner Stream"
933        Inner.Properties.Outlet.K               =       PP.LiquidThermalConductivity(OutletInner.T,OutletInner.P,OutletInner.z);
934
935"Viscosity Inner Stream at wall temperature"
936        Inner.Properties.Wall.Mu                =       PP.LiquidViscosity(Inner.Properties.Wall.Twall,Inner.Properties.Average.P,InletInner.z);
937
938        else
939
940"Average Heat Capacity InnerStream"
941        Inner.Properties.Average.Cp     =       PP.VapourCp(Inner.Properties.Average.T,Inner.Properties.Average.P,InletInner.z);
942
943"Inlet Heat Capacity Inner Stream"
944        Inner.Properties.Inlet.Cp               =       PP.VapourCp(InletInner.T,InletInner.P,InletInner.z);
945
946"Outlet Heat Capacity Inner Stream"
947        Inner.Properties.Outlet.Cp      =       PP.VapourCp(OutletInner.T,OutletInner.P,OutletInner.z);
948
949"Average Mass Density Inner Stream"
950        Inner.Properties.Average.rho    =       PP.VapourDensity(Inner.Properties.Average.T,Inner.Properties.Average.P,InletInner.z);
951
952"Inlet Mass Density Inner Stream"
953        Inner.Properties.Inlet.rho              =       PP.VapourDensity(InletInner.T,InletInner.P,InletInner.z);
954       
955"Outlet Mass Density Inner Stream"
956        Inner.Properties.Outlet.rho     =       PP.VapourDensity(OutletInner.T,OutletInner.P,OutletInner.z);
957
958"Average Viscosity Inner Stream"
959        Inner.Properties.Average.Mu     =       PP.VapourViscosity(Inner.Properties.Average.T,Inner.Properties.Average.P,InletInner.z);
960
961"Inlet Viscosity Inner Stream"
962        Inner.Properties.Inlet.Mu               =       PP.VapourViscosity(InletInner.T,InletInner.P,InletInner.z);
963
964"Outlet Viscosity Inner Stream"
965        Inner.Properties.Outlet.Mu      =       PP.VapourViscosity(OutletInner.T,OutletInner.P,OutletInner.z);
966
967"Average Conductivity Inner Stream"
968        Inner.Properties.Average.K              =       PP.VapourThermalConductivity(Inner.Properties.Average.T,Inner.Properties.Average.P,InletInner.z);
969
970"Inlet Conductivity Inner Stream"
971        Inner.Properties.Inlet.K                =       PP.VapourThermalConductivity(InletInner.T,InletInner.P,InletInner.z);
972
973"Outlet Conductivity Inner Stream"
974        Inner.Properties.Outlet.K               =       PP.VapourThermalConductivity(OutletInner.T,OutletInner.P,OutletInner.z);
975       
976"Viscosity Inner Stream at wall temperature"
977        Inner.Properties.Wall.Mu                =       PP.VapourViscosity(Inner.Properties.Wall.Twall,Inner.Properties.Average.P,InletInner.z);
978
979end
980
981if InletOuter.v equal 0
982
983        then
984
985"Average Heat Capacity Outer Stream"
986        Outer.Properties.Average.Cp     =               PP.LiquidCp(Outer.Properties.Average.T,Outer.Properties.Average.P,InletOuter.z);
987
988"Inlet Heat Capacity Outer Stream"
989        Outer.Properties.Inlet.Cp               =               PP.LiquidCp(InletOuter.T,InletOuter.P,InletOuter.z);
990
991"Outlet Heat Capacity Outer Stream"
992        Outer.Properties.Outlet.Cp      =               PP.LiquidCp(OutletOuter.T,OutletOuter.P,OutletOuter.z);
993
994"Average Mass Density Outer Stream"
995        Outer.Properties.Average.rho =          PP.LiquidDensity(Outer.Properties.Average.T,Outer.Properties.Average.P,InletOuter.z);
996
997"Inlet Mass Density Outer Stream"
998        Outer.Properties.Inlet.rho              =               PP.LiquidDensity(InletOuter.T,InletOuter.P,InletOuter.z);
999
1000"Outlet Mass Density Outer Stream"
1001        Outer.Properties.Outlet.rho     =               PP.LiquidDensity(OutletOuter.T,OutletOuter.P,OutletOuter.z);
1002
1003"Average Viscosity Outer Stream"
1004        Outer.Properties.Average.Mu     =               PP.LiquidViscosity(Outer.Properties.Average.T,Outer.Properties.Average.P,InletOuter.z);
1005
1006"Inlet Viscosity Outer Stream"
1007        Outer.Properties.Inlet.Mu       =               PP.LiquidViscosity(InletOuter.T,InletOuter.P,InletOuter.z);     
1008
1009"Outlet Viscosity Outer Stream"
1010        Outer.Properties.Outlet.Mu      =               PP.LiquidViscosity(OutletOuter.T,OutletOuter.P,OutletOuter.z); 
1011
1012"Average Conductivity Outer Stream"
1013        Outer.Properties.Average.K      =               PP.LiquidThermalConductivity(Outer.Properties.Average.T,Outer.Properties.Average.P,InletOuter.z);       
1014
1015"Inlet Conductivity Outer Stream"
1016        Outer.Properties.Inlet.K                =               PP.LiquidThermalConductivity(InletOuter.T,InletOuter.P,InletOuter.z);   
1017
1018"Outlet Conductivity Outer Stream"
1019        Outer.Properties.Outlet.K       =               PP.LiquidThermalConductivity(OutletOuter.T,OutletOuter.P,OutletOuter.z);       
1020
1021"Viscosity Outer Stream at wall temperature"
1022        Outer.Properties.Wall.Mu                =               PP.LiquidViscosity(Outer.Properties.Wall.Twall,Outer.Properties.Average.P,InletOuter.z);       
1023
1024
1025        else
1026
1027"Average Heat Capacity Outer Stream"
1028        Outer.Properties.Average.Cp     =               PP.VapourCp(Outer.Properties.Average.T,Outer.Properties.Average.P,InletOuter.z);
1029
1030"Inlet Heat Capacity Outer Stream"
1031        Outer.Properties.Inlet.Cp               =               PP.VapourCp(InletOuter.T,InletOuter.P,InletOuter.z);
1032
1033"Outlet Heat Capacity Outer Stream"
1034        Outer.Properties.Outlet.Cp      =               PP.VapourCp(OutletOuter.T,OutletOuter.P,OutletOuter.z);
1035
1036"Average Mass Density Outer Stream"
1037        Outer.Properties.Average.rho =          PP.VapourDensity(Outer.Properties.Average.T,Outer.Properties.Average.P,InletOuter.z);
1038
1039"Inlet Mass Density Outer Stream"
1040        Outer.Properties.Inlet.rho              =               PP.VapourDensity(InletOuter.T,InletOuter.P,InletOuter.z);
1041       
1042"Outlet Mass Density Outer Stream"
1043        Outer.Properties.Outlet.rho     =               PP.VapourDensity(OutletOuter.T,OutletOuter.P,OutletOuter.z);
1044
1045"Average Viscosity Outer Stream"
1046        Outer.Properties.Average.Mu     =               PP.VapourViscosity(Outer.Properties.Average.T,Outer.Properties.Average.P,InletOuter.z);
1047
1048"Inlet Viscosity Outer Stream"
1049        Outer.Properties.Inlet.Mu       =               PP.VapourViscosity(InletOuter.T,InletOuter.P,InletOuter.z);
1050
1051"Outlet Viscosity Outer Stream"
1052        Outer.Properties.Outlet.Mu      =               PP.VapourViscosity(OutletOuter.T,OutletOuter.P,OutletOuter.z);
1053
1054"Average Conductivity Outer Stream"
1055        Outer.Properties.Average.K      =               PP.VapourThermalConductivity(Outer.Properties.Average.T,Outer.Properties.Average.P,InletOuter.z);       
1056
1057"Inlet Conductivity Outer Stream"
1058        Outer.Properties.Inlet.K                =               PP.VapourThermalConductivity(InletOuter.T,InletOuter.P,InletOuter.z);   
1059
1060"Outlet Conductivity Outer Stream"
1061        Outer.Properties.Outlet.K       =               PP.VapourThermalConductivity(OutletOuter.T,OutletOuter.P,OutletOuter.z);       
1062
1063"Viscosity Outer Stream at wall temperature"
1064        Outer.Properties.Wall.Mu                =               PP.VapourViscosity(Outer.Properties.Wall.Twall,Outer.Properties.Average.P,InletOuter.z);
1065
1066end
1067
1068switch HotSide
1069       
1070        case "outer":
1071
1072"Energy Balance Outer Stream"
1073        Details.Q = InletOuter.F*(InletOuter.h-OutletOuter.h);
1074
1075"Energy Balance Inner Stream"
1076        Details.Q = InletInner.F*(OutletInner.h-InletInner.h);
1077
1078        when InletInner.T > InletOuter.T switchto "inner";
1079
1080case "inner":
1081
1082"Energy Balance Hot Stream"
1083        Details.Q = InletInner.F*(InletInner.h-OutletInner.h);
1084
1085"Energy Balance Cold Stream"
1086        Details.Q = InletOuter.F*(OutletOuter.h - InletOuter.h);
1087
1088        when InletInner.T < InletOuter.T switchto "outer";
1089
1090end
1091
1092"Flow Mass Inlet Inner Stream"
1093        Inner.Properties.Inlet.Fw       =  sum(M*InletInner.z)*InletInner.F;
1094
1095"Flow Mass Outlet Inner Stream"
1096        Inner.Properties.Outlet.Fw      =  sum(M*OutletInner.z)*OutletInner.F;
1097
1098"Flow Mass Inlet Outer Stream"
1099        Outer.Properties.Inlet.Fw               =  sum(M*InletOuter.z)*InletOuter.F;
1100
1101"Flow Mass Outlet Outer Stream"
1102        Outer.Properties.Outlet.Fw      =  sum(M*OutletOuter.z)*OutletOuter.F;
1103
1104"Molar Balance Outer Stream"
1105        OutletOuter.F = InletOuter.F;
1106       
1107"Molar Balance Inner Stream"
1108        OutletInner.F = InletInner.F;
1109
1110"Outer Stream Molar Fraction Constraint"
1111        OutletOuter.z=InletOuter.z;
1112       
1113"InnerStream Molar Fraction Constraint"
1114        OutletInner.z=InletInner.z;
1115
1116"Exchange Surface Area for one segment of pipe"
1117        Details.A=Pi*DoInner*(2*Lpipe);
1118
1119switch innerFlowRegime
1120       
1121        case "laminar":
1122       
1123"Inner Side Friction Factor for Pressure Drop - laminar Flow"
1124        Inner.PressureDrop.fi*Inner.PressureDrop.Re = 16;
1125       
1126        when Inner.PressureDrop.Re > 2300 switchto "transition";
1127
1128        case "transition":
1129       
1130"using Turbulent Flow - to be implemented"
1131        (Inner.PressureDrop.fi-0.0035)*(Inner.PressureDrop.Re^0.42) = 0.264;
1132
1133        when Inner.PressureDrop.Re < 2300 switchto "laminar";
1134        when Inner.PressureDrop.Re > 10000 switchto "turbulent";
1135
1136        case "turbulent":
1137
1138"Inner Side Friction Factor - Turbulent Flow"
1139        (Inner.PressureDrop.fi-0.0035)*(Inner.PressureDrop.Re^0.42) = 0.264;
1140
1141        when Inner.PressureDrop.Re < 10000 switchto "transition";
1142       
1143end     
1144
1145switch outerFlowRegime
1146       
1147        case "laminar":
1148       
1149"Outer Side Friction Factor - laminar Flow"
1150        Outer.PressureDrop.fi*Outer.PressureDrop.Re = 16;
1151       
1152        when Outer.PressureDrop.Re > 2300 switchto "transition";
1153
1154        case "transition":
1155       
1156"using Turbulent Flow - Transition Flow must be implemented"
1157        (Outer.PressureDrop.fi-0.0035)*(Outer.PressureDrop.Re^0.42) = 0.264;
1158
1159        when Outer.PressureDrop.Re < 2300 switchto "laminar";
1160        when Outer.PressureDrop.Re > 10000 switchto "turbulent";
1161
1162        case "turbulent":
1163
1164"Outer Side Friction Factor - Turbulent Flow"
1165        (Outer.PressureDrop.fi-0.0035)*(Outer.PressureDrop.Re^0.42) = 0.264;
1166
1167        when Outer.PressureDrop.Re < 10000 switchto "transition";
1168       
1169end
1170
1171switch innerFlowRegime
1172       
1173        case "laminar":
1174       
1175"Inner Side Friction Factor for Heat Transfer - laminar Flow"
1176        Inner.HeatTransfer.fi   = 1/(0.79*ln(Inner.HeatTransfer.Re)-1.64)^2;
1177       
1178switch InnerLaminarCorrelation
1179       
1180        case "Hausen":
1181
1182"Nusselt Number"
1183        Inner.HeatTransfer.Nu = 3.665 + ((0.19*((DiInner/Lpipe)*Inner.HeatTransfer.Re*Inner.HeatTransfer.PR)^0.8)/(1+0.117*((DiInner/Lpipe)*Inner.HeatTransfer.Re*Inner.HeatTransfer.PR)^0.467));
1184       
1185        case "Schlunder":
1186
1187"Nusselt Number"
1188        Inner.HeatTransfer.Nu = (49.027896+4.173281*Inner.HeatTransfer.Re*Inner.HeatTransfer.PR*(DiInner/Lpipe))^(1/3);
1189
1190end
1191       
1192        when Inner.HeatTransfer.Re > 2300 switchto "transition";
1193       
1194        case "transition":
1195       
1196"Inner Side Friction Factor for Heat Transfer - transition Flow"
1197        Inner.HeatTransfer.fi   = 1/(0.79*ln(Inner.HeatTransfer.Re)-1.64)^2;
1198       
1199switch InnerTransitionCorrelation
1200       
1201        case "Gnielinski":
1202       
1203"Nusselt Number"
1204        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;
1205
1206        case "Hausen":
1207
1208"Nusselt Number"
1209        Inner.HeatTransfer.Nu =0.116*(Inner.HeatTransfer.Re^(0.667)-125)*Inner.HeatTransfer.PR^(0.333)*(1+(DiInner/Lpipe)^0.667);
1210       
1211end
1212
1213        when Inner.HeatTransfer.Re < 2300 switchto "laminar";
1214        when Inner.HeatTransfer.Re > 10000 switchto "turbulent";
1215
1216        case "turbulent":
1217
1218switch InnerTurbulentCorrelation
1219       
1220        case "Petukhov":
1221       
1222"Inner Side Friction Factor for Heat Transfer - turbulent Flow"
1223        Inner.HeatTransfer.fi   = 1/(1.82*log(Inner.HeatTransfer.Re)-1.64)^2;
1224
1225"Nusselt Number"
1226        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;
1227       
1228        case "SiederTate":
1229
1230"Nusselt Number"
1231        Inner.HeatTransfer.Nu = 0.027*(Inner.HeatTransfer.PR)^(1/3)*(Inner.HeatTransfer.Re)^(4/5);
1232
1233"Inner Side Friction Factor for Heat Transfer - turbulent Flow"
1234        Inner.HeatTransfer.fi   = 1/(1.82*log(Inner.HeatTransfer.Re)-1.64)^2;
1235       
1236end
1237       
1238        when Inner.HeatTransfer.Re < 10000 switchto "transition";
1239       
1240end
1241
1242switch outerFlowRegime
1243       
1244        case "laminar":
1245       
1246"Outer Side Friction Factor for Heat Transfer - laminar Flow"
1247        Outer.HeatTransfer.fi   = 1/(0.79*ln(Outer.HeatTransfer.Re)-1.64)^2;
1248       
1249switch OuterLaminarCorrelation
1250       
1251        case "Hausen":
1252
1253"Nusselt Number"
1254        Outer.HeatTransfer.Nu = 3.665 + ((0.19*((Outer.HeatTransfer.Dh/Lpipe)*Outer.HeatTransfer.Re*Outer.HeatTransfer.PR)^0.8)/(1+0.117*((Outer.HeatTransfer.Dh/Lpipe)*Outer.HeatTransfer.Re*Outer.HeatTransfer.PR)^0.467));
1255       
1256        case "Schlunder":
1257
1258"Nusselt Number"
1259        Outer.HeatTransfer.Nu = (49.027896+4.173281*Outer.HeatTransfer.Re*Outer.HeatTransfer.PR*(Outer.HeatTransfer.Dh/Lpipe))^(1/3);
1260
1261end
1262       
1263        when Outer.HeatTransfer.Re > 2300 switchto "transition";
1264       
1265        case "transition":
1266       
1267switch OuterTransitionCorrelation
1268       
1269        case "Gnielinski":
1270
1271"Outer Side Friction Factor for Heat Transfer - transition Flow"
1272        Outer.HeatTransfer.fi   = 1/(0.79*ln(Outer.HeatTransfer.Re)-1.64)^2;
1273
1274"Nusselt Number"
1275        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;
1276
1277        case "Hausen":
1278
1279"Nusselt Number"
1280        Outer.HeatTransfer.Nu = 0.116*(Outer.HeatTransfer.Re^(0.667)-125)*Outer.HeatTransfer.PR^(0.333)*(1+(Outer.HeatTransfer.Dh/Lpipe)^0.667);
1281
1282
1283"Outer Side Friction Factor for Heat Transfer - transition Flow"
1284        Outer.HeatTransfer.fi   = 1/(0.79*ln(Outer.HeatTransfer.Re)-1.64)^2;
1285       
1286end
1287       
1288        when Outer.HeatTransfer.Re < 2300 switchto "laminar";
1289        when Outer.HeatTransfer.Re > 10000 switchto "turbulent";
1290       
1291        case "turbulent":
1292       
1293switch OuterTurbulentCorrelation
1294       
1295        case "Petukhov":
1296
1297"Outer Side Friction Factor for Heat Transfer - turbulent Flow"
1298        Outer.HeatTransfer.fi   = 1/(1.82*log(Outer.HeatTransfer.Re)-1.64)^2;
1299       
1300"Nusselt Number"
1301        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;
1302       
1303        case "SiederTate":
1304
1305"Nusselt Number"
1306        Outer.HeatTransfer.Nu = 0.027*(Outer.HeatTransfer.PR)^(1/3)*(Outer.HeatTransfer.Re)^(4/5);
1307
1308"Outer Side Friction Factor for Heat Transfer - turbulent Flow"
1309        Outer.HeatTransfer.fi   = 1/(1.82*log(Outer.HeatTransfer.Re)-1.64)^2;
1310       
1311end
1312
1313        when Outer.HeatTransfer.Re < 10000 switchto "transition";
1314
1315end
1316
1317"Inner Pipe Film Coefficient"
1318        Inner.HeatTransfer.hcoeff = (Inner.HeatTransfer.Nu*Inner.Properties.Average.K/DiInner)*Inner.HeatTransfer.Phi;
1319
1320"Outer Pipe Film Coefficient"
1321        Outer.HeatTransfer.hcoeff= (Outer.HeatTransfer.Nu*Outer.Properties.Average.K/Outer.HeatTransfer.Dh)*Outer.HeatTransfer.Phi;
1322
1323"Total Pressure Drop Outer Stream"
1324        Outer.PressureDrop.Pdrop  = Outer.PressureDrop.Pd_fric+Outer.PressureDrop.Pd_ret;
1325
1326"Total Pressure Drop Inner Stream"
1327        Inner.PressureDrop.Pdrop  = Inner.PressureDrop.Pd_fric+Inner.PressureDrop.Pd_ret;
1328       
1329"Pressure Drop Outer Stream"
1330        OutletOuter.P  = InletOuter.P - Outer.PressureDrop.Pdrop;
1331
1332"Pressure Drop Inner Stream"
1333        OutletInner.P  = InletInner.P - Inner.PressureDrop.Pdrop;
1334       
1335"Outer Pipe Pressure Drop for friction"
1336        Outer.PressureDrop.Pd_fric = (2*Outer.PressureDrop.fi*(2*Lpipe)*Outer.Properties.Average.rho*Outer.HeatTransfer.Vmean^2)/(Outer.PressureDrop.Dh*Outer.HeatTransfer.Phi);
1337       
1338"Inner Pipe Pressure Drop for friction"
1339        Inner.PressureDrop.Pd_fric = (2*Inner.PressureDrop.fi*(2*Lpipe)*Inner.Properties.Average.rho*Inner.HeatTransfer.Vmean^2)/(DiInner*Inner.HeatTransfer.Phi);
1340
1341"Outer Pipe Pressure Drop due to return"
1342        Outer.PressureDrop.Pd_ret = 1.5*Outer.Properties.Average.rho*Outer.HeatTransfer.Vmean^2;
1343
1344"Inner Pipe Pressure Drop due to return"
1345        Inner.PressureDrop.Pd_ret = 1.5*Inner.Properties.Average.rho*Inner.HeatTransfer.Vmean^2;
1346
1347"Outer Pipe Phi correction"
1348        Outer.HeatTransfer.Phi = (Outer.Properties.Average.Mu/Outer.Properties.Wall.Mu)^0.14;
1349       
1350"Inner Pipe Phi correction"
1351        Inner.HeatTransfer.Phi  = (Inner.Properties.Average.Mu/Inner.Properties.Wall.Mu)^0.14;
1352
1353"Outer Pipe Prandtl Number"
1354        Outer.HeatTransfer.PR = ((Outer.Properties.Average.Cp/Outer.Properties.Average.Mw)*Outer.Properties.Average.Mu)/Outer.Properties.Average.K;
1355
1356"Inner Pipe Prandtl Number"
1357        Inner.HeatTransfer.PR = ((Inner.Properties.Average.Cp/Inner.Properties.Average.Mw)*Inner.Properties.Average.Mu)/Inner.Properties.Average.K;
1358
1359"Outer Pipe Reynolds Number for Heat Transfer"
1360        Outer.HeatTransfer.Re = (Outer.Properties.Average.rho*Outer.HeatTransfer.Vmean*Outer.HeatTransfer.Dh)/Outer.Properties.Average.Mu;
1361
1362"Outer Pipe Reynolds Number for Pressure Drop"
1363        Outer.PressureDrop.Re = (Outer.Properties.Average.rho*Outer.HeatTransfer.Vmean*Outer.PressureDrop.Dh)/Outer.Properties.Average.Mu;
1364
1365"Inner Pipe Reynolds Number for Heat Transfer"
1366        Inner.HeatTransfer.Re = (Inner.Properties.Average.rho*Inner.HeatTransfer.Vmean*Inner.HeatTransfer.Dh)/Inner.Properties.Average.Mu;
1367
1368"Inner Pipe Reynolds Number for Pressure Drop"
1369        Inner.PressureDrop.Re = Inner.HeatTransfer.Re;
1370
1371"Outer Pipe Velocity"
1372        Outer.HeatTransfer.Vmean*(Outer.HeatTransfer.As*Outer.Properties.Average.rho)  = Outer.Properties.Inlet.Fw;
1373
1374"Inner Pipe Velocity"
1375        Inner.HeatTransfer.Vmean*(Inner.HeatTransfer.As*Inner.Properties.Average.rho)  = Inner.Properties.Inlet.Fw;
1376
1377"Overall Heat Transfer Coefficient Clean"
1378        Details.Uc*((DoInner/(Inner.HeatTransfer.hcoeff*DiInner) )+(DoInner*ln(DoInner/DiInner)/(2*Kwall))+(1/(Outer.HeatTransfer.hcoeff)))=1;
1379
1380"Overall Heat Transfer Coefficient Dirty"
1381        Details.Ud*(Rfi*(DoInner/DiInner) +  Rfo + (DoInner/(Inner.HeatTransfer.hcoeff*DiInner) )+(DoInner*ln(DoInner/DiInner)/(2*Kwall))+(1/(Outer.HeatTransfer.hcoeff)))=1;
1382
1383end
1384
1385Model Hairpin_NTU as Hairpin_Basic
1386
1387ATTRIBUTES
1388
1389        Icon = "icon/hairpin";
1390        Pallete = true;
1391        Brief  = "Hairpin Heat Exchanger - NTU Method";
1392        Info  =
1393        "to be documented.";
1394
1395PARAMETERS
1396
1397FlowDirection   as Switcher     (Brief="Flow Direction",Valid=["counter","cocurrent"],Default="cocurrent");
1398       
1399VARIABLES
1400
1401Method as NTU_Basic     (Brief="NTU Method of Calculation", Symbol=" ");
1402
1403EQUATIONS
1404
1405"Number of Units Transference"
1406        Method.NTU*Method.Cmin = Details.Ud*Pi*DoInner*(2*Lpipe);
1407       
1408"Minimum Heat Capacity"
1409        Method.Cmin  = min([Method.Ch,Method.Cc]);
1410
1411"Maximum Heat Capacity"
1412        Method.Cmax  = max([Method.Ch,Method.Cc]);
1413
1414"Thermal Capacity Ratio"
1415        Method.Cr    = Method.Cmin/Method.Cmax;
1416
1417"Effectiveness Correction"
1418        Method.Eft1 = 1;
1419
1420if Method.Cr equal 0
1421       
1422        then   
1423"Effectiveness"
1424        Method.Eft = 1-exp(-Method.NTU);
1425       
1426        else
1427
1428switch  FlowDirection
1429
1430        case "cocurrent":
1431       
1432"Effectiveness in Cocurrent Flow"
1433        Method.Eft = (1-exp(-Method.NTU*(1+Method.Cr)))/(1+Method.Cr);
1434
1435        case "counter":
1436
1437if Method.Eft >= 1
1438       
1439        then
1440       
1441"Effectiveness in Counter Flow"
1442        Method.Eft = 1;
1443       
1444        else
1445       
1446"Effectiveness in Counter Flow"
1447        Method.NTU*(Method.Cr-1.00001) = ln(abs((Method.Eft-1.00001))) - ln(abs((Method.Cr*Method.Eft-1.00001)));
1448end
1449
1450end
1451
1452end
1453
1454switch HotSide
1455       
1456        case "outer":
1457
1458"Duty"
1459        Details.Q       = Method.Eft*Method.Cmin*(InletOuter.T-InletInner.T);
1460
1461"Hot Stream Heat Capacity"
1462        Method.Ch  = InletOuter.F*Outer.Properties.Average.Cp;
1463       
1464"Cold Stream Heat Capacity"
1465        Method.Cc = InletInner.F*Inner.Properties.Average.Cp;
1466
1467        when InletInner.T > InletOuter.T switchto "inner";
1468       
1469        case "inner":
1470
1471"Duty"
1472        Details.Q       = Method.Eft*Method.Cmin*(InletInner.T-InletOuter.T);
1473
1474"Cold Stream Heat Capacity"
1475        Method.Cc = InletOuter.F*Outer.Properties.Average.Cp;
1476       
1477"Hot Stream Heat Capacity"
1478        Method.Ch = InletInner.F*Inner.Properties.Average.Cp;
1479       
1480        when InletInner.T < InletOuter.T switchto "outer";
1481       
1482end
1483
1484end
1485
1486Model Hairpin_LMTD as Hairpin_Basic
1487       
1488ATTRIBUTES
1489
1490        Icon = "icon/hairpin";
1491        Pallete = true;
1492        Brief  = "Hairpin Heat Exchanger - LMTD Method";
1493        Info  =
1494        "to be documented.";
1495
1496PARAMETERS
1497
1498FlowDirection   as Switcher     (Brief="Flow Direction",Valid=["counter","cocurrent"],Default="cocurrent");
1499       
1500VARIABLES
1501
1502Method as LMTD_Basic    (Brief="LMTD Method of Calculation", Symbol=" ");
1503
1504EQUATIONS
1505
1506"Exchange Surface Area"
1507        Details.Q = Details.Ud*Pi*DoInner*(2*Lpipe)*Method.LMTD;
1508       
1509"LMTD Correction Factor - True counter ou cocurrent flow"
1510        Method.Fc = 1;
1511
1512switch HotSide
1513       
1514        case "outer":
1515       
1516switch FlowDirection
1517
1518        case "cocurrent":
1519       
1520"Temperature Difference at Inlet - Cocurrent Flow"
1521        Method.DT0 = InletOuter.T - InletInner.T;
1522
1523"Temperature Difference at Outlet - Cocurrent Flow"
1524        Method.DTL = OutletOuter.T - OutletInner.T;
1525
1526        case "counter":
1527       
1528"Temperature Difference at Inlet - Counter Flow"
1529        Method.DT0 = InletOuter.T - OutletInner.T;
1530
1531"Temperature Difference at Outlet - Counter Flow"
1532        Method.DTL = OutletOuter.T - InletInner.T;
1533       
1534
1535end
1536
1537        when InletInner.T > InletOuter.T switchto "inner";
1538       
1539        case "inner":
1540
1541switch FlowDirection
1542
1543        case "cocurrent":
1544       
1545"Temperature Difference at Inlet - Cocurrent Flow"
1546        Method.DT0 = InletInner.T - InletOuter.T;
1547
1548"Temperature Difference at Outlet - Cocurrent Flow"
1549        Method.DTL = OutletInner.T - OutletOuter.T;
1550       
1551        case "counter":
1552       
1553"Temperature Difference at Inlet - Counter Flow"
1554        Method.DT0 = InletInner.T - OutletOuter.T;
1555
1556"Temperature Difference at Outlet - Counter Flow"
1557        Method.DTL = OutletInner.T - InletOuter.T;
1558       
1559end
1560
1561        when InletInner.T < InletOuter.T switchto "outer";
1562
1563end
1564
1565end
Note: See TracBrowser for help on using the repository browser.