source: trunk/eml/water_steam/power_plant.mso @ 961

Last change on this file since 961 was 354, checked in by Argimiro Resende Secchi, 15 years ago

Fixing more wiki notation.

File size: 9.6 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* Models to simulate a power plant.
17*--------------------------------------------------------------------
18* Author: Argimiro R. Secchi
19* $Id: power_plant.mso 195 2007-03-07 20:30:12Z arge $
20*-------------------------------------------------------------------*#
21
22# Declaracao de tipos
23        CalorEspecifico         as Real(Default=1e-3,Lower=0,Upper=1,Unit='MJ/kg/K');
24        CoefGlobal_area         as Real(Default=10,Lower=0,Upper=1e3,Unit='1000*kW/K');
25        Dif_Pres                        as Real(Default=0,Lower=-50,Upper=50,Unit='MPa');
26        Dif_Temp                        as Real(Default=0,Lower=-300,Upper=300,Unit='K');
27        Eficiencia                      as Real(Default=0.75,Lower=0,Upper=1);
28        EnergiaInterna          as Real(Default=2,Lower=0,Upper=10,Unit='MJ/kg');
29        Entalpia                        as Real(Default=3,Lower=1e-3,Upper=7,Unit='MJ/kg');
30        Entropia                        as Real(Default=5,Lower=1e-3,Upper=8,Unit='kJ/kg/K');
31        Fracao                          as Real(Default=0.5,Lower=0,Upper=1);
32        Potencia                        as Real(Default=10,Lower=0,Upper=500,Unit='1000*kW');
33        Pressao                         as Real(Default=1,Lower=5e-4,Upper=20,Unit='MPa');
34        MassaEspecifica         as Real(Default=1e3,Lower=1e-3,Upper=1e6,Unit='kg/m^3');
35    NoType                              as Real(Default=1,Lower=-2,Upper=2);
36        Temperatura                     as Real(Default=600,Lower=273.16,Upper=900,Unit='K');
37        VazaoMassica            as Real(Default=50,Lower=0,Upper=1e4,Unit='kg/s');
38        VolumeEspecifico        as Real(Default=1e-3,Lower=1e-6,Upper=500,Unit='m^3/kg');
39
40Model Corrente
41        #Brief="Corrente para conexão entre os equipamentos"
42        VARIABLES
43        F as VazaoMassica;
44        P as Pressao;
45        T as Temperatura;
46        S as Entropia;
47        H as Entalpia;
48end
49
50# Modelo de turbina sem sangria
51Model Turbina
52        PARAMETERS
53outer propterm as Plugin(Brief="Steam tables", Type="water");
54       
55        VARIABLES
56        H_IS            as Entalpia;
57        EF_T            as Eficiencia (Brief="Eficiencia da turbina");
58        POT_TURB        as Potencia (Brief="Potencia da turbina");
59in      Fin             as Corrente (Symbol="_{in}");
60out     Fout    as Corrente (Symbol="_{out}");
61
62        EQUATIONS
63
64        H_IS = propterm.propPS(Fout.P,Fin.S);
65
66        Fout.H = (H_IS - Fin.H) * EF_T + Fin.H;
67       
68        [Fout.S,Fout.T] = propterm.propPH(Fout.P,Fout.H);
69                       
70        Fin.F * (Fin.H - Fout.H) = POT_TURB;
71
72        Fout.F = Fin.F;
73end
74
75# Modelo de turbina com sangria
76Model Turbina_sangra
77        PARAMETERS
78outer propterm as Plugin(Brief="Steam tables", Type="water");
79
80        VARIABLES
81        H_IS            as Entalpia;
82        EF_T            as Eficiencia(Brief="Eficiencia da turbina");
83        POT_TURB        as Potencia(Brief="Potencia da turbina");
84        y                       as Fracao(Brief="Fracao massica da sangria");
85in      Fin                     as Corrente (Symbol="_{in}");
86out Fout                as Corrente (Symbol="_{out}");
87out Fouts               as Corrente (Symbol="_{outx}");#(Brief="Sangria da Turbina")
88
89        EQUATIONS
90
91        H_IS = propterm.propPS(Fout.P,Fin.S);
92
93        Fout.H = (H_IS - Fin.H) * EF_T + Fin.H;
94       
95        [Fout.S,Fout.T] = propterm.propPH(Fout.P,Fout.H);
96                       
97        Fin.F * (Fin.H - Fout.H) = POT_TURB;
98
99        Fouts.F = Fin.F * y;
100        Fout.F = Fin.F - Fouts.F;
101        Fouts.P = Fout.P;
102        Fouts.T = Fout.T;
103        Fouts.S = Fout.S;
104        Fouts.H = Fout.H;
105end
106
107# Modelo de condensador com uma alimentacao
108Model Condensador
109        PARAMETERS
110outer propterm as Plugin(Brief="Steam tables", Type="water");
111       
112        VARIABLES
113        Q_COND  as Potencia (Brief="Taxa de calor removido");
114        G_S             as Dif_Temp (Brief="Grau de sub-resfriamento");
115in      Fin             as Corrente (Symbol="_{in}");
116out     Fout    as Corrente (Symbol="_{out}");
117
118        EQUATIONS
119
120        Fout.P = Fin.P;
121        Fout.T = propterm.Tsat(Fout.P) - G_S;
122       
123        [Fout.S,Fout.H] = propterm.propPTl(Fout.P,Fout.T);
124         
125        Q_COND = Fin.F * (Fin.H - Fout.H);
126        Fout.F = Fin.F;
127end
128
129# Modelo de condensador com duas alimentacoes
130Model Condensador_2alim
131        PARAMETERS
132outer propterm as Plugin(Brief="Steam tables", Type="water");
133   
134        VARIABLES
135        Q_COND  as Potencia (Brief="Taxa de calor removido");
136        G_S             as Dif_Temp (Brief="Grau de sub-resfriamento");
137in      Fin1    as Corrente (Brief="Corrente com pressao igual a saida", Symbol="_{in1}");
138in      Fin2    as Corrente (Symbol="_{in2}");
139out     Fout    as Corrente (Symbol="_{out}");
140
141        EQUATIONS
142
143        Fout.P = Fin1.P;
144        Fout.T = propterm.Tsat(Fout.P) - G_S;
145       
146        [Fout.S,Fout.H] = propterm.propPTl(Fout.P,Fout.T);
147
148        Fout.F = Fin1.F + Fin2.F;
149        Q_COND = Fin1.F * Fin1.H + Fin2.F * Fin2.H - Fout.F * Fout.H;
150end
151
152# Modelo de tanque de armazenamento com tres alimentacoes
153Model Tanque
154        PARAMETERS
155outer propterm as Plugin(Brief="Steam tables", Type="water");
156       
157    VARIABLES
158in      Fin1    as Corrente (Symbol="_{in1}");
159in      Fin2    as Corrente (Symbol="_{in2}");
160in      Fin3    as Corrente (Symbol="_{in3}");
161out     Fout    as Corrente (Symbol="_{out}");
162
163        EQUATIONS
164
165        Fout.F = Fin1.F + Fin2.F + Fin3.F;
166        Fout.F * Fout.H = Fin1.F * Fin1.H + Fin2.F * Fin2.H + Fin3.F * Fin3.H;
167
168        [Fout.S,Fout.T] = propterm.propPH(Fout.P,Fout.H);
169end
170
171# Modelo de trocador de calor, dada a carga termica
172Model Trocador
173        PARAMETERS
174outer propterm as Plugin(Brief="Steam tables", Type="water");
175       
176    VARIABLES
177        Q               as Potencia;
178        DP              as Dif_Pres;
179in      Fin             as Corrente (Symbol="_{in}");
180out     Fout    as Corrente (Symbol="_{out}");
181
182        EQUATIONS
183
184        Fout.F = Fin.F;
185        Fout.P = Fin.P - DP;
186        Fout.F * (Fout.H - Fin.H) = Q;
187        [Fout.S,Fout.T] = propterm.propPH(Fout.P,Fout.H);
188end
189
190# Modelo de torre de refrigeracao
191Model Torre
192        PARAMETERS
193        cpa             as CalorEspecifico;
194
195        VARIABLES
196        F               as VazaoMassica;
197        Q               as Potencia;
198        DTh             as Dif_Temp;
199        DTc             as Dif_Temp;
200        DTar    as Dif_Temp; # grau de aquecimento do ar
201        Th              as Temperatura;
202        Tc              as Temperatura;
203        Tar_c   as Temperatura;
204        Tar_h   as Temperatura;
205        Uat             as CoefGlobal_area;
206
207        EQUATIONS
208
209        DTar = Tar_h - Tar_c;
210        DTh = Th - Tar_h;
211        DTc = Tc  - Tar_c;
212        F * cpa * (Th - Tc) = Q;
213        Uat * (DTh - DTc) = Q * ln(abs(DTh/DTc));
214#       Uat * 0.5 * (DTh + DTc) = Q;
215end
216
217# Modelo de bomba
218Model Bomba
219        PARAMETERS
220outer propterm as Plugin(Brief="Steam tables", Type="water");
221        v_esp     as VolumeEspecifico;
222       
223        VARIABLES
224        H_IS    as Entalpia;
225        POT_BMB as Potencia(Brief="Potencia do motor da bomba");
226        POT_EF  as Potencia(Brief="Potencia injetada pela bomba");
227        EF_B    as Eficiencia(Brief="Eficiencia da bomba");
228in      Fin             as Corrente (Symbol="_{in}");
229out     Fout    as Corrente (Symbol="_{out}");
230       
231        EQUATIONS
232
233        H_IS = propterm.propPS(Fout.P,Fin.S);
234
235        (Fout.H - Fin.H) * EF_B = H_IS - Fin.H;
236#       (Fout.H - Fin.H) * Fin.F = POT_EF; # Forma alternativa
237       
238        [Fout.S,Fout.T] = propterm.propPH(Fout.P,Fout.H);
239
240        POT_EF = POT_BMB * EF_B;
241        POT_EF = Fin.F * v_esp * (Fout.P - Fin.P);
242        Fout.F = Fin.F;
243end
244
245# Modelo de gerador de vapor
246Model Gerador_Vapor
247        PARAMETERS
248outer propterm as Plugin(Brief="Steam tables", Type="water");
249
250    VARIABLES
251        Q_GV            as Potencia (Brief="Taxa de calor gerado na caldeira");
252        EF_GV           as Eficiencia (Brief="Eficiencia do gerador de vapor");
253        Qra                     as Potencia (Brief="Taxa de calor nos reaquecedores");
254        Qsa                     as Potencia (Brief="Taxa de calor nos superaquecedores");
255        Qca                     as Potencia (Brief="Taxa de calor no evaporador");
256        Qec                     as Potencia (Brief="Taxa de calor nos economizadores");
257in      Fin_a           as Corrente (Brief="Agua de alimentacao", Symbol="_{in_a}");
258in      Fin_ra          as Corrente (Brief="Vapor a ser Reaquecido", Symbol="_{in_ra}");
259out     Fout_sa     as Corrente (Brief="Vapor Superaquecido", Symbol="_{out_sa}");
260out     Fout_ra     as Corrente (Brief="Vapor Reaquecido", Symbol="_{out_ra}");
261        Fvap            as Corrente (Brief="Evaporador");
262        Feco            as Corrente (Brief="Economizadores");
263
264        EQUATIONS
265
266#       [Fin_a.S,Fin_a.H] = propterm.propPTl(Fin_a.P,Fin_a.T); # Reduntante no ciclo fechado
267
268        "Economizadores ECO1 + ECO1"
269#       Feco.F = Fin_a.F; # Reduntante no ciclo fechado
270        [Feco.S,Feco.H] = propterm.propPTv(Feco.P,Feco.T);     
271        Qec = Feco.F * (Feco.H - Fin_a.H);
272
273        "Evaporador - Camisa dagua"
274        Fvap.F = Feco.F;
275        [Fvap.S,Fvap.H] = propterm.propPTv(Fvap.P,Fvap.T);     
276        Qca = Fvap.F * (Fvap.H - Feco.H);
277
278        "Superaquecedores BT + AT"
279        Fout_sa.F = Fvap.F;
280        [Fout_sa.S,Fout_sa.H] = propterm.propPTv(Fout_sa.P,Fout_sa.T);
281        Qsa = Fout_sa.F * (Fout_sa.H - Fvap.H);
282
283        "Reaquecedores BT + AT"
284        Fout_ra.F = Fin_ra.F;
285        [Fout_ra.S,Fout_ra.H] = propterm.propPTv(Fout_ra.P,Fout_ra.T);
286        Qra = Fout_ra.F * (Fout_ra.H - Fin_ra.H);
287
288        "Caldeira"
289        Q_GV * EF_GV = Qec + Qca + Qsa + Qra;
290end
291
292# Modelo simplificado gerador de vapor
293Model Gerador_Vapor_Simples
294        PARAMETERS
295outer propterm as Plugin(Brief="Steam tables", Type="water");
296       
297        VARIABLES
298        Q_GV            as Potencia;
299        EF_GV           as Eficiencia;
300in      Fin                     as Corrente (Symbol="_{in}");
301out     Fout            as Corrente (Symbol="_{out}");
302
303        EQUATIONS
304
305        Fout.P = Fin.P;
306       
307        [Fout.S,Fout.H] = propterm.propPTv(Fout.P,Fout.T);
308
309        Q_GV * EF_GV = Fin.F * (Fout.H - Fin.H);
310#       Fout.F = Fin.F;
311end
312
313# Modelo de gerador eletrico
314Model Gerador_Eletrico
315        PARAMETERS
316        EF_GE as Eficiencia(Brief="Eficiencia do gerador eletrico");
317
318        VARIABLES
319        POT_GE as Potencia(Brief="Potencia do gerador eletrico");
320end
321
322# Modelo de separador de corrente
323Model Splitter
324        VARIABLES
325        y                       as Fracao(Brief="Fracao de massa para a segunda corrente");
326in      Fin                     as Corrente (Symbol="_{in}");
327out     Fout            as Corrente (Symbol="_{out}");
328out     Fouts           as Corrente(Brief="Segunda corrente", Symbol="_{outx}");
329
330        EQUATIONS
331
332        Fout.P = Fin.P;
333        Fout.T = Fin.T;
334        Fout.S = Fin.S;
335        Fout.H = Fin.H;
336
337        Fouts.P = Fin.P;
338        Fouts.T = Fin.T;
339        Fouts.S = Fin.S;
340        Fouts.H = Fin.H;
341
342        Fouts.F = Fin.F * y;
343        Fout.F = Fin.F - Fouts.F;
344end
Note: See TracBrowser for help on using the repository browser.