source: branches/gui/eml/streams.mso @ 779

Last change on this file since 779 was 757, checked in by gerson bicca, 14 years ago

some adaption in models

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 26.5 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*--------------------------------------------------------------------
16* Model of basic streams
17*----------------------------------------------------------------------
18* Author: Paula B. Staudt and Rafael de P. Soares
19* $Id: streams.mso 757 2009-06-03 20:07:22Z bicca $
20*---------------------------------------------------------------------*#
21
22using "types";
23
24Model stream
25        ATTRIBUTES
26        Pallete = false;
27        Brief = "General Material Stream";
28        Info =
29        "This is the basic building block for the EML models.
30        Every model should have input and output streams derived
31        from this model.";
32       
33        PARAMETERS
34        outer NComp as Integer (Brief = "Number of chemical components", Lower = 1);
35
36        VARIABLES
37        F as flow_mol                   (Brief = "Stream Molar Flow Rate");
38        T as temperature                (Brief = "Stream Temperature");
39        P as pressure                   (Brief = "Stream Pressure");
40        h as enth_mol                   (Brief = "Stream Enthalpy");
41        v as fraction                   (Brief = "Vapourization fraction");
42        z(NComp) as fraction    (Brief = "Stream Molar Fraction");
43end
44
45Model liquid_stream as stream
46        ATTRIBUTES
47        Pallete = false;
48        Brief = "Liquid Material Stream";
49        Info =
50        "Model for liquid material streams.
51        This model should be used only when the phase of the stream
52        is known ''a priori''.";
53
54        PARAMETERS
55        outer PP as Plugin(Brief = "External Physical Properties", Type="PP");
56       
57        EQUATIONS
58        "Liquid Enthalpy"
59        h = PP.LiquidEnthalpy(T, P, z);
60        "Liquid stream"
61        v = 0;
62end
63
64Model vapour_stream as stream
65        ATTRIBUTES
66        Pallete = false;
67        Brief = "Vapour Material Stream";
68        Info =
69        "Model for vapour material streams.
70        This model should be used only when the phase of the stream
71        is known ''a priori''.";
72
73        PARAMETERS
74        outer PP as Plugin(Brief = "External Physical Properties", Type="PP");
75       
76        EQUATIONS
77        "Vapour Enthalpy"
78        h = PP.VapourEnthalpy(T, P, z);
79        "Vapour stream"
80        v = 1;
81end
82
83Model streamPH as stream
84        ATTRIBUTES
85        Brief = "Stream with built-in flash calculation";
86        Info = "
87        This model should be used when the vaporization fraction
88        is unknown.
89       
90        The built-in flash calculation will determine the stream
91        state as a function of the overall composition '''z''', the
92        pressure '''P''' and the enthalpy '''h'''.
93       
94        Additionally, the liquid composition '''x''' and the vapor
95        composition '''y''' are calculated.     
96        ";
97        Pallete = false;
98       
99        PARAMETERS
100        outer PP as Plugin(Brief = "External Physical Properties", Type="PP");
101       
102        VARIABLES
103        x(NComp) as fraction    (Brief = "Liquid Molar Fraction",Hidden=true);
104        y(NComp) as fraction    (Brief = "Vapour Molar Fraction",Hidden=true);
105
106        EQUATIONS
107        "Flash Calculation"
108        [v, x, y] = PP.FlashPH(P, h, z);
109       
110        "Enthalpy"
111        h = (1-v)*PP.LiquidEnthalpy(T, P, x) + v*PP.VapourEnthalpy(T, P, y);
112       
113end
114
115Model streamPHS as streamPH
116        ATTRIBUTES
117        Brief = "Stream with built-in flash calculation";
118        Info = "
119        This model should be used when the vaporization fraction
120        is unknown.
121       
122        The built-in flash calculation will determine the stream
123        state as a function of the overall composition '''z''', the
124        pressure '''P''' and the enthalpy '''h'''.
125       
126        Additionally, the liquid composition '''x''', the vapor
127        composition '''y''' and the stream entropy are calculated.     
128        ";
129        Pallete = false;
130       
131PARAMETERS
132        outer PP as Plugin(Brief = "External Physical Properties", Type="PP");
133       
134VARIABLES
135        s as entr_mol   (Brief = "Stream Entropy");
136
137EQUATIONS
138
139"Entropy"
140        s = (1-v)*PP.LiquidEntropy(T, P, x) +   v*PP.VapourEntropy(T, P, y);
141       
142end
143
144Model sink
145        ATTRIBUTES
146        Pallete = true;
147        Icon = "icon/Sink";
148        Brief = "Material stream sink";
149        Info = "
150        This model should be used for boundary streams when additional
151        information about the stream is desired.
152
153        Some of the additional informations calculated by this models are:
154         * Mass density
155         * Mass flow
156         * Mass compostions
157         * Specific volume
158         * Vapour fraction
159         * Volumetric flow
160         * Liquid and Vapour compositions
161        ";
162
163        PARAMETERS
164        outer PP                        as Plugin               (Brief = "External Physical Properties", Type="PP");
165        outer NComp             as Integer              (Brief = "Number of chemical components", Lower = 1);
166                  M(NComp)      as molweight    (Brief = "Component Mol Weight");
167       
168        SET
169
170        M   = PP.MolecularWeight();
171       
172        VARIABLES
173        in Inlet                as stream               (Brief = "Inlet Stream", PosX=0, PosY=0.5308, Protected=true,Symbol="_{in}");
174        v                               as fraction             (Brief = "Vapourization fraction",Hidden=true);
175        x(NComp)                as fraction             (Brief = "Liquid Molar Fraction",Hidden=true);
176        y(NComp)                as fraction             (Brief = "Vapour Molar Fraction",Hidden=true);
177        zmass(NComp)    as fraction             (Brief = "Mass Fraction");
178        Mw                              as molweight    (Brief = "Average Mol Weight");
179        vm                              as volume_mol   (Brief = "Molar Volume");       
180        rho                             as dens_mass    (Brief = "Stream Mass Density");
181        rhom                    as dens_mol             (Brief = "Stream Molar Density");
182        Fw                              as flow_mass    (Brief = "Stream Mass Flow");
183        Fvol            as flow_vol     (Brief = "Volumetric Flow");
184        T_Cdeg                  as temperature  (Brief = "Temperature in °C", Lower=-200);
185
186        EQUATIONS
187        "Flash Calculation"
188        [v, x, y] = PP.FlashPH(Inlet.P, Inlet.h, Inlet.z);
189       
190        "Average Molecular Weight"
191        Mw = sum(M*Inlet.z);
192
193        "Molar Density"
194                rhom * vm = 1;
195               
196        "Mass or Molar Density"
197        rhom * Mw = rho;
198
199        "Flow Mass"
200        Fw      =  Mw*Inlet.F;
201
202        "Molar Volume"
203        vm = (1-v)*PP.LiquidVolume(Inlet.T, Inlet.P, x) + v*PP.VapourVolume(Inlet.T,Inlet.P,y);
204       
205        "Volumetric Flow"
206        Fvol = Inlet.F*vm ;
207       
208        "Mass Fraction"
209        zmass = M*Inlet.z / Mw;
210       
211        "Temperature in °C"
212        T_Cdeg = Inlet.T - 273.15 * 'K';
213
214end
215
216Model sink2
217        ATTRIBUTES
218        Pallete = true;
219        Icon = "icon/Sink2";
220        Brief = "Material stream sink";
221        Info = "
222        This model should be used for boundary streams when additional
223        information about the stream is desired.
224
225        Some of the additional informations calculated by this models are:
226         * Mass density
227         * Mass flow
228         * Mass compostions
229         * Specific volume
230         * Vapour fraction
231         * Volumetric flow
232         * Liquid and Vapour compositions
233        ";
234
235        PARAMETERS
236        outer PP                        as Plugin               (Brief = "External Physical Properties", Type="PP");
237        outer NComp             as Integer              (Brief = "Number of chemical components", Lower = 1);
238                  M(NComp)      as molweight    (Brief = "Component Mol Weight");
239       
240        SET
241
242        M   = PP.MolecularWeight();
243       
244        VARIABLES
245        in Inlet                as stream               (Brief = "Inlet Stream", PosX=1, PosY=0.5308, Protected=true,Symbol="_{in}");
246        v                               as fraction             (Brief = "Vapourization fraction",Hidden=true);
247        x(NComp)                as fraction             (Brief = "Liquid Molar Fraction",Hidden=true);
248        y(NComp)                as fraction             (Brief = "Vapour Molar Fraction",Hidden=true);
249        zmass(NComp)    as fraction             (Brief = "Mass Fraction");
250        Mw                              as molweight    (Brief = "Average Mol Weight");
251        vm                              as volume_mol   (Brief = "Molar Volume");       
252        rho                             as dens_mass    (Brief = "Stream Mass Density");
253        rhom                    as dens_mol             (Brief = "Stream Molar Density");
254        Fw                              as flow_mass    (Brief = "Stream Mass Flow");
255        Fvol            as flow_vol     (Brief = "Volumetric Flow");
256        T_Cdeg                  as temperature  (Brief = "Temperature in °C", Lower=-200);
257
258        EQUATIONS
259        "Flash Calculation"
260        [v, x, y] = PP.FlashPH(Inlet.P, Inlet.h, Inlet.z);
261       
262        "Average Molecular Weight"
263        Mw = sum(M*Inlet.z);
264
265        "Molar Density"
266                rhom * vm = 1;
267               
268        "Mass or Molar Density"
269        rhom * Mw = rho;
270
271        "Flow Mass"
272        Fw      =  Mw*Inlet.F;
273
274        "Molar Volume"
275        vm = (1-v)*PP.LiquidVolume(Inlet.T, Inlet.P, x) + v*PP.VapourVolume(Inlet.T,Inlet.P,y);
276       
277        "Volumetric Flow"
278        Fvol = Inlet.F*vm ;
279       
280        "Mass Fraction"
281        zmass = M*Inlet.z / Mw;
282       
283        "Temperature in °C"
284        T_Cdeg = Inlet.T - 273.15 * 'K';
285
286end
287
288Model simple_sink
289        ATTRIBUTES
290        Pallete = true;
291        Icon = "icon/Sink";
292        Brief = "Simple material stream sink";
293        Info = "
294        This model should be used for boundary streams when no additional
295        information about the stream is desired.
296        ";
297       
298        VARIABLES
299        in Inlet                as stream       (Brief = "Inlet Stream", PosX=0, PosY=0.5308, Protected=true,Symbol="_{in}");
300end
301
302Model simple_sink2
303        ATTRIBUTES
304        Pallete = true;
305        Icon = "icon/Sink2";
306        Brief = "Simple material stream sink";
307        Info = "
308        This model should be used for boundary streams when no additional
309        information about the stream is desired.
310        ";
311       
312        VARIABLES
313        in Inlet                as stream       (Brief = "Inlet Stream", PosX=1, PosY=0.5308, Protected=true,Symbol="_{in}");
314       
315end
316
317Model energy_source
318        ATTRIBUTES
319        Pallete = true;
320        Icon = "icon/energy_source";
321        Brief = "Energy stream source";
322
323        VARIABLES
324        out OutletQ             as power(Brief = "Outlet energy stream", PosX=1, PosY=0.40, Symbol="_{out}");
325
326end
327
328Model energy_source2
329        ATTRIBUTES
330        Pallete = true;
331        Icon = "icon/energy_source2";
332        Brief = "Energy stream source";
333
334        VARIABLES
335        out OutletQ             as power(Brief = "Outlet energy stream", PosX=0, PosY=0.40, Symbol="_{out}");
336
337end
338
339Model work_source
340        ATTRIBUTES
341        Pallete = true;
342        Icon = "icon/work_source";
343        Brief = "Work stream source";
344
345        VARIABLES
346        out Work                as power(Brief = "Outlet work stream", PosX=1, PosY=0.46, Symbol="_{out}");
347
348end
349
350Model info_stream
351        ATTRIBUTES
352        Pallete = true;
353        Icon = "icon/Info_Stream";
354        Brief = "Material stream information";
355        Info = "
356        This model should be used for middle streams when additional
357        information about the stream is desired.
358
359        Some of the additional informations calculated by this models are:
360         * Mass density
361         * Mass flow
362         * Mass compostions
363         * Specific volume
364         * Vapour fraction
365         * Volumetric flow
366         * Liquid and Vapour compositions
367         * Viscosity
368         * Heat Capacity
369         * Thermal Conductivity
370         * Temperature in Celsius Degrees
371        ";
372
373PARAMETERS
374        outer PP                        as Plugin                       (Brief = "External Physical Properties", Type="PP");
375        outer NComp     as Integer                      (Brief = "Number of chemical components", Lower = 1);
376                  M(NComp)      as molweight    (Brief = "Component Mol Weight");
377       
378SET
379
380        M   = PP.MolecularWeight();
381       
382VARIABLES
383
384        in      Inlet           as stream               (Brief = "Inlet Stream", PosX=0, PosY=0.50, Protected=true , Symbol="_{in}");
385        out     Outlet          as stream               (Brief = "Outlet Stream", PosX=1, PosY=0.50, Protected=true , Symbol="_{out}");
386       
387        v                                               as fraction                     (Brief = "Vapourization fraction",Hidden=true);
388        x(NComp)                        as fraction                     (Brief = "Liquid Molar Fraction",Hidden=true);
389        y(NComp)                        as fraction                     (Brief = "Vapour Molar Fraction",Hidden=true);
390       
391        F(NComp)        as flow_mol             (Brief = "Component Molar Flow",Protected=true);
392        FwTotal         as flow_mass            (Brief = "Total Mass Flow",Protected=true);
393        Fw(NComp)               as flow_mass            (Brief = "Component Mass Flow",Protected=true);
394        FvolTotal           as flow_vol         (Brief = "Total Volumetric Flow",Protected=true);
395        T_Cdeg                          as temperature          (Brief = "Temperature in °C", Lower=-200,Protected=true);
396
397        Mu                                      as viscosity            (Brief="Stream Viscosity",Lower=0.0001, Symbol = "\mu",Protected=true);
398        Cp                                      as cp_mol                       (Brief="Stream Molar Heat Capacity", Upper=1e10,Protected=true);       
399        K                                               as conductivity         (Brief="Stream Thermal Conductivity", Default=1.0, Lower=1e-5, Upper=500,Protected=true);
400        Mw                                      as molweight            (Brief = "Average Mol Weight",Protected=true);
401        vm                                      as volume_mol   (Brief = "Molar Volume",Protected=true);       
402        rho                                     as dens_mass            (Brief = "Stream Mass Density",Protected=true);
403        rhom                                    as dens_mol             (Brief = "Stream Molar Density",Protected=true);
404        s                                               as entr_mol             (Brief = "Stream Entropy",Protected=true);
405        zmass(NComp)    as fraction                     (Brief = "Mass Fraction",Protected=true);
406       
407EQUATIONS
408
409"Flash Calculation"
410        [v, x, y] = PP.FlashPH(Inlet.P, Inlet.h, Inlet.z);
411       
412"Average Molecular Weight"
413        Mw = sum(M*Inlet.z);
414
415"Mass Density"
416        rho * ((1-v)/PP.LiquidDensity(Inlet.T,Inlet.P,x) + v/PP.VapourDensity(Inlet.T,Inlet.P,y)) = 1;
417       
418"Mass or Molar Density"
419        rhom * Mw = rho;
420
421"Total Flow Mass"
422        FwTotal =  Mw*Inlet.F;
423
424"Component Flow Mass"
425        Fw      =  FwTotal*zmass;
426
427"Molar Volume"
428        vm = (1-v)*PP.LiquidVolume(Inlet.T, Inlet.P, x) + v*PP.VapourVolume(Inlet.T,Inlet.P,y);
429       
430"Total Volumetric Flow"
431        FvolTotal = Inlet.F*vm ;
432       
433"Mass Fraction"
434        zmass = M*Inlet.z / Mw;
435
436"Stream Heat Capacity"
437        Cp      =       (1-v)*PP.LiquidCp(Inlet.T, Inlet.P, x) + v*PP.VapourCp(Inlet.T,Inlet.P,y);
438
439"Stream Viscosity"
440        Mu      =       (1-v)*PP.LiquidViscosity(Inlet.T, Inlet.P, x) + v*PP.VapourViscosity(Inlet.T,Inlet.P,y);
441
442"Stream ThermalConductivity"
443        K       =       (1-v)*PP.LiquidThermalConductivity(Inlet.T, Inlet.P, x) + v*PP.VapourThermalConductivity(Inlet.T,Inlet.P,y);
444
445"Stream Overall Entropy"
446        s = (1-v)*PP.LiquidEntropy(Inlet.T, Inlet.P, x) + v*PP.VapourEntropy(Inlet.T, Inlet.P, y);
447       
448"Temperature in °C"
449        T_Cdeg = Inlet.T - 273.15 * 'K';
450
451"Outlet Flow"
452        Outlet.F = Inlet.F;
453
454"Component Molar Flow"
455        F = Inlet.F*Inlet.z;
456
457"Outlet Temperature"
458        Outlet.T = Inlet.T;
459
460"Outlet Pressure"
461        Outlet.P = Inlet.P;
462
463"Outlet Vapour Fraction"
464        Outlet.v = Inlet.v;
465
466"Outlet Enthalpy"
467        Outlet.h = Inlet.h;
468
469"Outlet Composition"
470        Outlet.z= Inlet.z;
471
472end
473
474Model source
475
476ATTRIBUTES
477        Pallete = true;
478        Icon = "icon/Source";
479        Brief = "Material stream source";
480        Info = "
481        This model should be used for boundary streams.
482        Usually these streams are known and come from another process
483        units.
484
485        The user should specify:
486         * Total molar (mass or volumetric) flow
487         * Temperature
488         * Pressure
489         * Molar or mass composition
490       
491        No matter the specification set, the model will calculate some
492        additional properties:
493         * Mass density
494         * Mass flow
495         * Mass compostions
496         * Specific volume
497         * Vapour fraction
498         * Volumetric flow
499         * Liquid and Vapour compositions
500        ";
501
502PARAMETERS
503        outer PP                                                as Plugin                       (Brief = "External Physical Properties", Type="PP");
504        outer NComp                             as Integer                      (Brief = "Number of chemical components", Lower = 1);
505                  M(NComp)                              as molweight    (Brief = "Component Mol Weight");
506                  CompositionBasis              as Switcher             (Brief = "Molar or Mass Composition", Valid = ["Molar", "Mass"], Default="Molar");
507                  ValidPhases                           as Switcher             (Brief = "Valid Phases for Flash Calculation", Valid = ["Vapour-Only", "Liquid-Only","Vapour-Liquid"], Default="Vapour-Liquid");
508       
509
510SET
511
512        M   = PP.MolecularWeight();
513
514VARIABLES
515
516        out Outlet                      as stream                       (Brief = "Outlet stream", PosX=1, PosY=0.5256, Symbol="_{out}",Protected=true);
517       
518        Composition(NComp) as fraction                  (Brief = "Stream Composition");
519        SumOfComposition as positive                    (Brief = "Sum of Stream Composition",Protected=true);
520        F                                                               as flow_mol             (Brief = "Stream Molar Flow Rate");
521        Fw                                                      as flow_mass            (Brief = "Stream Mass Flow");
522        Fvol                                    as flow_vol        (Brief = "Volumetric Flow");
523        T                                                               as temperature  (Brief = "Stream Temperature");
524        T_Cdeg                                          as temperature  (Brief = "Temperature in °C", Lower=-200);
525        P                                                               as pressure             (Brief = "Stream Pressure");
526       
527        x(NComp)                        as fraction                     (Brief = "Liquid Molar Fraction",Hidden=true);
528        y(NComp)                        as fraction                     (Brief = "Vapour Molar Fraction",Hidden=true);
529       
530        Mw                                              as molweight                    (Brief = "Average Mol Weight",Protected=true);
531        vm                                              as volume_mol           (Brief = "Molar Volume",Protected=true);       
532        rho                                             as dens_mass                    (Brief = "Stream Mass Density",Protected=true);
533        rhom                                            as dens_mol                     (Brief = "Stream Molar Density",Protected=true);
534       
535        zmass(NComp)            as fraction                             (Brief = "Mass Fraction",Protected=true);
536       
537        EQUATIONS
538
539switch CompositionBasis
540
541        case "Molar":
542"Stream Molar Composition"
543        Outlet.z = Composition/sum(Composition);
544
545"Stream Mass Composition"
546        zmass = M*Outlet.z / Mw;
547
548        case "Mass":
549"Stream Mass Composition"
550        zmass = Composition/sum(Composition);
551
552"Stream Molar Composition"
553        Outlet.z*sum(zmass/M) = zmass/M;
554
555end
556
557switch ValidPhases
558       
559        case "Liquid-Only":
560
561"Vapour Fraction"
562        Outlet.v = 0;
563
564"Liquid Composition"
565        x = Outlet.z;
566
567"Vapour Composition"
568        y = Outlet.z;
569
570"Overall Enthalpy"
571        Outlet.h = PP.LiquidEnthalpy(Outlet.T, Outlet.P, x);
572
573"Molar Volume"
574        vm = PP.LiquidVolume(Outlet.T, Outlet.P, x);
575
576        case "Vapour-Only":
577
578"Vapor Fraction"
579        Outlet.v = 1;
580
581"Liquid Composition"
582        x = Outlet.z;
583
584"Vapour Composition"
585        y = Outlet.z;
586
587"Overall Enthalpy"
588        Outlet.h = PP.VapourEnthalpy(Outlet.T, Outlet.P, y);
589
590"Molar Volume"
591        vm = PP.VapourVolume(Outlet.T, Outlet.P, y);
592
593
594        case "Vapour-Liquid":
595
596"Flash Calculation"
597        [Outlet.v, x, y] = PP.Flash(Outlet.T, Outlet.P, Outlet.z);
598
599"Overall Enthalpy"
600        Outlet.h = (1-Outlet.v)*PP.LiquidEnthalpy(Outlet.T, Outlet.P, x) + Outlet.v*PP.VapourEnthalpy(Outlet.T, Outlet.P, y);
601
602"Molar Volume"
603        vm = (1-Outlet.v)*PP.LiquidVolume(Outlet.T, Outlet.P, x) + Outlet.v*PP.VapourVolume(Outlet.T,Outlet.P,y);
604
605end
606
607"Sum of Composition"
608        SumOfComposition = sum(Composition);
609
610"Molar Density"
611        rhom * vm = 1;
612
613"Average Molecular Weight"
614        Mw = sum(M*Outlet.z);
615
616"Mass or Molar Density"
617        rhom * Mw = rho;
618
619"Flow Mass"
620        Fw      =  Mw*Outlet.F;
621
622"Volumetric Flow"
623        Fvol = Outlet.F*vm ;
624       
625"Temperature in °C"
626        T_Cdeg = Outlet.T - 273.15 * 'K';
627
628"Equate Flow"
629        Outlet.F = F;
630
631"Equate Pressures"
632        Outlet.P = P;
633
634"Equate Temperatures"
635        Outlet.T = T;
636
637end
638
639Model source2
640
641ATTRIBUTES
642        Pallete = true;
643        Icon = "icon/Source2";
644        Brief = "Material stream source";
645        Info = "
646        This model should be used for boundary streams.
647        Usually these streams are known and come from another process
648        units.
649
650        The user should specify:
651         * Total molar (mass or volumetric) flow
652         * Temperature
653         * Pressure
654         * Molar or mass composition
655       
656        No matter the specification set, the model will calculate some
657        additional properties:
658         * Mass density
659         * Mass flow
660         * Mass compostions
661         * Specific volume
662         * Vapour fraction
663         * Volumetric flow
664         * Liquid and Vapour compositions
665        ";
666
667PARAMETERS
668        outer PP                                                as Plugin                       (Brief = "External Physical Properties", Type="PP");
669        outer NComp                             as Integer                      (Brief = "Number of chemical components", Lower = 1);
670                  M(NComp)                              as molweight    (Brief = "Component Mol Weight");
671                  CompositionBasis              as Switcher             (Brief = "Molar or Mass Composition", Valid = ["Molar", "Mass"], Default="Molar");
672                  ValidPhases                           as Switcher             (Brief = "Valid Phases for Flash Calculation", Valid = ["Vapour-Only", "Liquid-Only","Vapour-Liquid"], Default="Vapour-Liquid");
673       
674
675SET
676
677        M   = PP.MolecularWeight();
678
679VARIABLES
680
681        out Outlet                      as stream                       (Brief = "Outlet stream", PosX=0, PosY=0.5256, Symbol="_{out}",Protected=true);
682       
683        Composition(NComp) as fraction                  (Brief = "Stream Composition");
684        SumOfComposition as positive                    (Brief = "Sum of Stream Composition",Protected=true);
685        F                                                               as flow_mol             (Brief = "Stream Molar Flow Rate");
686        Fw                                                      as flow_mass            (Brief = "Stream Mass Flow");
687        Fvol                                    as flow_vol        (Brief = "Volumetric Flow");
688        T                                                               as temperature  (Brief = "Stream Temperature");
689        T_Cdeg                                          as temperature  (Brief = "Temperature in °C", Lower=-200);
690        P                                                               as pressure             (Brief = "Stream Pressure");
691       
692        x(NComp)                        as fraction                     (Brief = "Liquid Molar Fraction",Hidden=true);
693        y(NComp)                        as fraction                     (Brief = "Vapour Molar Fraction",Hidden=true);
694       
695        Mw                                              as molweight                    (Brief = "Average Mol Weight",Protected=true);
696        vm                                              as volume_mol           (Brief = "Molar Volume",Protected=true);       
697        rho                                             as dens_mass                    (Brief = "Stream Mass Density",Protected=true);
698        rhom                                            as dens_mol                     (Brief = "Stream Molar Density",Protected=true);
699       
700        zmass(NComp)            as fraction                             (Brief = "Mass Fraction",Protected=true);
701       
702        EQUATIONS
703
704switch CompositionBasis
705
706        case "Molar":
707"Stream Molar Composition"
708        Outlet.z = Composition/sum(Composition);
709
710"Stream Mass Composition"
711        zmass = M*Outlet.z / Mw;
712
713        case "Mass":
714"Stream Mass Composition"
715        zmass = Composition/sum(Composition);
716
717"Stream Molar Composition"
718        Outlet.z*sum(zmass/M) = zmass/M;
719
720end
721
722switch ValidPhases
723       
724        case "Liquid-Only":
725
726"Vapour Fraction"
727        Outlet.v = 0;
728
729"Liquid Composition"
730        x = Outlet.z;
731
732"Vapour Composition"
733        y = Outlet.z;
734
735"Overall Enthalpy"
736        Outlet.h = PP.LiquidEnthalpy(Outlet.T, Outlet.P, x);
737
738"Molar Volume"
739        vm = PP.LiquidVolume(Outlet.T, Outlet.P, x);
740
741        case "Vapour-Only":
742
743"Vapor Fraction"
744        Outlet.v = 1;
745
746"Liquid Composition"
747        x = Outlet.z;
748
749"Vapour Composition"
750        y = Outlet.z;
751
752"Overall Enthalpy"
753        Outlet.h = PP.VapourEnthalpy(Outlet.T, Outlet.P, y);
754
755"Molar Volume"
756        vm = PP.VapourVolume(Outlet.T, Outlet.P, y);
757
758
759        case "Vapour-Liquid":
760
761"Flash Calculation"
762        [Outlet.v, x, y] = PP.Flash(Outlet.T, Outlet.P, Outlet.z);
763
764"Overall Enthalpy"
765        Outlet.h = (1-Outlet.v)*PP.LiquidEnthalpy(Outlet.T, Outlet.P, x) + Outlet.v*PP.VapourEnthalpy(Outlet.T, Outlet.P, y);
766
767"Molar Volume"
768        vm = (1-Outlet.v)*PP.LiquidVolume(Outlet.T, Outlet.P, x) + Outlet.v*PP.VapourVolume(Outlet.T,Outlet.P,y);
769
770end
771
772"Sum of Composition"
773        SumOfComposition = sum(Composition);
774
775"Molar Density"
776        rhom * vm = 1;
777
778"Average Molecular Weight"
779        Mw = sum(M*Outlet.z);
780
781"Mass or Molar Density"
782        rhom * Mw = rho;
783
784"Flow Mass"
785        Fw      =  Mw*Outlet.F;
786
787"Volumetric Flow"
788        Fvol = Outlet.F*vm ;
789       
790"Temperature in °C"
791        T_Cdeg = Outlet.T - 273.15 * 'K';
792
793"Equate Flow"
794        Outlet.F = F;
795
796"Equate Pressures"
797        Outlet.P = P;
798
799"Equate Temperatures"
800        Outlet.T = T;
801
802end
803
804Model simple_source
805
806ATTRIBUTES
807        Pallete = true;
808        Icon = "icon/Source";
809        Brief = "Simple Material stream source";
810        Info = "
811        This model should be used for boundary streams.
812        Usually these streams are known and come from another process
813        units.
814
815        The user should specify:
816         * Total molar flow
817         * Temperature
818         * Pressure
819         * Molar composition
820";
821
822PARAMETERS
823        outer PP                                                as Plugin                       (Brief = "External Physical Properties", Type="PP");
824        outer NComp                             as Integer                      (Brief = "Number of chemical components", Lower = 1);
825                  M(NComp)                              as molweight    (Brief = "Component Mol Weight");
826                  ValidPhases                           as Switcher             (Brief = "Valid Phases for Flash Calculation", Valid = ["Vapour-Only", "Liquid-Only","Vapour-Liquid"], Default="Vapour-Liquid");
827       
828
829SET
830
831        M   = PP.MolecularWeight();
832
833VARIABLES
834
835        out Outlet                      as stream                       (Brief = "Outlet stream", PosX=1, PosY=0.5256, Symbol="_{out}",Protected=true);
836       
837        MolarComposition(NComp) as fraction                     (Brief = "Stream Molar Composition");
838        SumOfComposition as positive                    (Brief = "Sum of Stream Composition",Protected=true);
839        F                                                               as flow_mol             (Brief = "Stream Molar Flow Rate");
840        T                                                               as temperature  (Brief = "Stream Temperature");
841        T_Cdeg                                          as temperature  (Brief = "Temperature in °C", Lower=-200);
842        P                                                               as pressure             (Brief = "Stream Pressure");
843       
844        x(NComp)                        as fraction                     (Brief = "Liquid Molar Fraction",Hidden=true);
845        y(NComp)                        as fraction                     (Brief = "Vapour Molar Fraction",Hidden=true);
846       
847
848EQUATIONS
849
850"Sum of Composition"
851        SumOfComposition = sum(MolarComposition);
852       
853"Stream Molar Composition"
854        Outlet.z = MolarComposition/sum(MolarComposition);
855
856
857switch ValidPhases
858       
859        case "Liquid-Only":
860
861"Vapour Fraction"
862        Outlet.v = 0;
863
864"Liquid Composition"
865        x = Outlet.z;
866
867"Vapour Composition"
868        y = Outlet.z;
869
870"Overall Enthalpy"
871        Outlet.h = PP.LiquidEnthalpy(Outlet.T, Outlet.P, x);
872
873
874        case "Vapour-Only":
875
876"Vapor Fraction"
877        Outlet.v = 1;
878
879"Liquid Composition"
880        x = Outlet.z;
881
882"Vapour Composition"
883        y = Outlet.z;
884
885"Overall Enthalpy"
886        Outlet.h = PP.VapourEnthalpy(Outlet.T, Outlet.P, y);
887
888
889        case "Vapour-Liquid":
890
891"Flash Calculation"
892        [Outlet.v, x, y] = PP.Flash(Outlet.T, Outlet.P, Outlet.z);
893
894"Overall Enthalpy"
895        Outlet.h = (1-Outlet.v)*PP.LiquidEnthalpy(Outlet.T, Outlet.P, x) + Outlet.v*PP.VapourEnthalpy(Outlet.T, Outlet.P, y);
896
897
898end
899
900"Temperature in °C"
901        T_Cdeg = Outlet.T - 273.15 * 'K';
902
903"Equate Flow"
904        Outlet.F = F;
905
906"Equate Pressures"
907        Outlet.P = P;
908
909"Equate Temperatures"
910        Outlet.T = T;
911
912end
913
914Model simple_source2
915
916ATTRIBUTES
917        Pallete = true;
918        Icon = "icon/Source2";
919        Brief = "Simple Material stream source";
920        Info = "
921        This model should be used for boundary streams.
922        Usually these streams are known and come from another process
923        units.
924
925        The user should specify:
926         * Total molar flow
927         * Temperature
928         * Pressure
929         * Molar composition
930";
931
932PARAMETERS
933        outer PP                                                as Plugin                       (Brief = "External Physical Properties", Type="PP");
934        outer NComp                             as Integer                      (Brief = "Number of chemical components", Lower = 1);
935                  M(NComp)                              as molweight    (Brief = "Component Mol Weight");
936                  ValidPhases                           as Switcher             (Brief = "Valid Phases for Flash Calculation", Valid = ["Vapour-Only", "Liquid-Only","Vapour-Liquid"], Default="Vapour-Liquid");
937       
938
939SET
940
941        M   = PP.MolecularWeight();
942
943VARIABLES
944
945        out Outlet                      as stream                       (Brief = "Outlet stream", PosX=1, PosY=0.5256, Symbol="_{out}",Protected=true);
946       
947        MolarComposition(NComp) as fraction                     (Brief = "Stream Molar Composition");
948        SumOfComposition as positive                    (Brief = "Sum of Stream Composition",Protected=true);
949        F                                                               as flow_mol             (Brief = "Stream Molar Flow Rate");
950        T                                                               as temperature  (Brief = "Stream Temperature");
951        T_Cdeg                                          as temperature  (Brief = "Temperature in °C", Lower=-200);
952        P                                                               as pressure             (Brief = "Stream Pressure");
953       
954        x(NComp)                        as fraction                     (Brief = "Liquid Molar Fraction",Hidden=true);
955        y(NComp)                        as fraction                     (Brief = "Vapour Molar Fraction",Hidden=true);
956       
957
958EQUATIONS
959
960"Sum of Composition"
961        SumOfComposition = sum(MolarComposition);
962       
963"Stream Molar Composition"
964        Outlet.z = MolarComposition/sum(MolarComposition);
965
966
967switch ValidPhases
968       
969        case "Liquid-Only":
970
971"Vapour Fraction"
972        Outlet.v = 0;
973
974"Liquid Composition"
975        x = Outlet.z;
976
977"Vapour Composition"
978        y = Outlet.z;
979
980"Overall Enthalpy"
981        Outlet.h = PP.LiquidEnthalpy(Outlet.T, Outlet.P, x);
982
983
984        case "Vapour-Only":
985
986"Vapor Fraction"
987        Outlet.v = 1;
988
989"Liquid Composition"
990        x = Outlet.z;
991
992"Vapour Composition"
993        y = Outlet.z;
994
995"Overall Enthalpy"
996        Outlet.h = PP.VapourEnthalpy(Outlet.T, Outlet.P, y);
997
998
999        case "Vapour-Liquid":
1000
1001"Flash Calculation"
1002        [Outlet.v, x, y] = PP.Flash(Outlet.T, Outlet.P, Outlet.z);
1003
1004"Overall Enthalpy"
1005        Outlet.h = (1-Outlet.v)*PP.LiquidEnthalpy(Outlet.T, Outlet.P, x) + Outlet.v*PP.VapourEnthalpy(Outlet.T, Outlet.P, y);
1006
1007
1008end
1009
1010"Temperature in °C"
1011        T_Cdeg = Outlet.T - 273.15 * 'K';
1012
1013"Equate Flow"
1014        Outlet.F = F;
1015
1016"Equate Pressures"
1017        Outlet.P = P;
1018
1019"Equate Temperatures"
1020        Outlet.T = T;
1021
1022end
1023
1024Model sourceNoFlow
1025
1026ATTRIBUTES
1027        Pallete = true;
1028        Icon = "icon/SourceNoFlow";
1029        Brief = "Simple Material stream source with no flow.";
1030        Info = "
1031        This model should be used for boundary streams.
1032        Usually these streams are known and come from another process
1033        units.";
1034
1035PARAMETERS
1036        outer PP                                as Plugin                       (Brief = "External Physical Properties", Type="PP");
1037        outer NComp             as Integer                      (Brief = "Number of chemical components", Lower = 1);
1038
1039VARIABLES
1040
1041        out Outlet                      as stream                       (Brief = "Outlet stream", PosX=1, PosY=0.5256, Symbol="_{out}",Protected=true);
1042
1043EQUATIONS
1044
1045"Stream Molar Composition"
1046        Outlet.z = 1/NComp;
1047
1048"Stream Molar Enthalpy"
1049        Outlet.h = 0 * 'J/mol';
1050
1051"Stream Temperature"
1052        Outlet.T = 300 * 'K';
1053
1054"Stream Molar Flow"
1055        Outlet.F = 0 * 'kmol/h';
1056
1057"Stream Pressure"
1058        Outlet.P = 1 * 'atm';
1059
1060"Stream Vapour Fraction"
1061        Outlet.v = 0;
1062
1063end
1064
1065Model sinkNoFlow
1066        ATTRIBUTES
1067        Pallete = true;
1068        Icon = "icon/SinkNoFlow";
1069        Brief = "Simple material stream sink";
1070        Info = "
1071        This model should be used for seal an outlet material stream port.
1072        ";
1073       
1074        VARIABLES
1075        in Inlet                as stream       (Brief = "Inlet Stream", PosX=0, PosY=0.5308, Protected=true,Symbol="_{in}");
1076
1077EQUATIONS
1078"Stream Molar Flow"
1079        Inlet.F = 0 * 'kmol/h';
1080       
1081end
Note: See TracBrowser for help on using the repository browser.