Ignore:
Timestamp:
Apr 16, 2016, 1:56:49 PM (6 years ago)
Author:
Argimiro Resende Secchi
Message:

Update water_steam

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/gui/eml/water_steam/power_plant.mso

    r354 r963  
    2828        EnergiaInterna          as Real(Default=2,Lower=0,Upper=10,Unit='MJ/kg');
    2929        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');
     30        EntalpiaMol                     as Real(Default=3,Lower=1e-3,Upper=7,Unit='kJ/kmol');
     31        Entropia                        as Real(Default=5,Lower=1e-3,Upper=10,Unit='kJ/kg/K');
    3132        Fracao                          as Real(Default=0.5,Lower=0,Upper=1);
    32         Potencia                        as Real(Default=10,Lower=0,Upper=500,Unit='1000*kW');
     33        Potencia                        as Real(Default=10,Lower=0,Upper=500,Unit='1000*kW', Color="Red");
    3334        Pressao                         as Real(Default=1,Lower=5e-4,Upper=20,Unit='MPa');
    3435        MassaEspecifica         as Real(Default=1e3,Lower=1e-3,Upper=1e6,Unit='kg/m^3');
     
    3738        VazaoMassica            as Real(Default=50,Lower=0,Upper=1e4,Unit='kg/s');
    3839        VolumeEspecifico        as Real(Default=1e-3,Lower=1e-6,Upper=500,Unit='m^3/kg');
     40        Pot_sinal                       as Potencia(Color="Red", LineDashed=true);
     41        positive                        as Real (Brief = "Positive General Constant", Default=1.0, Lower=-1e-6);
     42        mol                             as positive (Brief = "Moles", Default=2500, Upper=1e9, final Unit = 'kmol');
     43        fraction                        as Real (Brief = "Fraction" , Default=0.5, Lower=-1e-6, Upper=1.00001);
     44        molweight                       as Real (Brief = "Molar Weight", Default=75, Lower=1, Upper=1e8, final Unit = 'kg/kmol');
     45        Volume                          as Real (Default=1e-3,Lower=1e-6,Upper=500,Unit='m^3');
     46        Reacao_mol                      as Real (Brief = "Molar Reaction Rate", Default=0, Lower=-1e6, Upper=1e6, final Unit = 'kmol/h/m^3');
     47        VazaoMolar                      as Real(Default=50,Lower=0,Upper=1e4,Unit='kmol/s');
    3948
    4049Model Corrente
     
    4453        P as Pressao;
    4554        T as Temperatura;
    46         S as Entropia;
    47         H as Entalpia;
    48 end
     55        S as Entropia; # (Lower=-2);
     56        H as Entalpia; # (Lower=-100);
     57end
     58
     59Model CorrenteZ as Corrente
     60        PARAMETERS
     61outer Ncomp as Integer;
     62
     63        VARIABLES
     64        z(NComp) as fraction;
     65end
     66
     67Model CorrenteVap as CorrenteZ
     68        ATTRIBUTES
     69        Pallete = false;
     70        Brief = "Vapour Material Stream";
     71        Info =
     72        "Model for vapour material streams.
     73        This model should be used only when the phase of the stream
     74        is known ''a priori''.";
     75
     76        PARAMETERS
     77outer PP as Plugin(Brief = "External Physical Properties");
     78       
     79        EQUATIONS
     80        "Vapour Enthalpy"
     81        H = PP.VapourEnthalpy(T, P, z);
     82        "Vapour Entropy"
     83        S = PP.VapourEntropy(T, P, z);
     84end
     85
     86Model Fonte2
     87        ATTRIBUTES
     88        Pallete = true;
     89        Icon = "icon/fonte2";
     90        Brief="Corrente de saída";
     91        Info = " ";
     92
     93        PARAMETERS
     94outer PP2 as Plugin(Brief="Steam tables");
     95
     96        VARIABLES
     97out Fout        as      Corrente(Symbol="_{out}", PosX = 1, PosY = 0.5);
     98
     99        EQUATIONS
     100        [Fout.S,Fout.H] = PP2.propPTl(Fout.P,Fout.T);
     101end
     102
     103
     104Model Sumidouro
     105        ATTRIBUTES
     106        Pallete = true;
     107        Icon = "icon/sumidouro";
     108        Brief="Sumidouro de corrente de processo";
     109        Info = " ";
     110       
     111        VARIABLES
     112in Fin  as      Corrente(Symbol="_{in}", PosX = 0, PosY = 0.5 );
     113end
     114
     115
     116Model SumidouroQ
     117        ATTRIBUTES
     118        Pallete = true;
     119        Icon = "icon/sumidouroQ";
     120        Brief="Sumidouro de calor";
     121       
     122                VARIABLES
     123in Qin  as      Potencia(Symbol="_{in}", PosX = 0, PosY = 0.5);
     124end
     125
    49126
    50127# Modelo de turbina sem sangria
    51128Model Turbina
    52         PARAMETERS
    53 outer propterm as Plugin(Brief="Steam tables", Type="water");
     129        ATTRIBUTES
     130        Pallete = true;
     131        Icon = "icon/turbina";
     132       
     133       
     134        PARAMETERS
     135outer PP2 as Plugin(Brief="Steam tables");
    54136       
    55137        VARIABLES
    56138        H_IS            as Entalpia;
    57139        EF_T            as Eficiencia (Brief="Eficiencia da turbina");
    58         POT_TURB        as Potencia (Brief="Potencia da turbina");
    59 in      Fin             as Corrente (Symbol="_{in}");
    60 out     Fout    as Corrente (Symbol="_{out}");
    61 
    62         EQUATIONS
    63 
    64         H_IS = propterm.propPS(Fout.P,Fin.S);
     140in      Fin                     as Corrente (Symbol="_{in}", PosX = 0, PosY = 0.25);
     141out     POT_TURB        as Potencia (Brief="Potencia da turbina",PosX = 1, PosY = 0.5);
     142out     Fout            as Corrente (Symbol="_{out}", PosX = 1, PosY = 1);
     143
     144        EQUATIONS
     145
     146        H_IS = PP2.propPS(Fout.P,Fin.S);
    65147
    66148        Fout.H = (H_IS - Fin.H) * EF_T + Fin.H;
    67149       
    68         [Fout.S,Fout.T] = propterm.propPH(Fout.P,Fout.H);
     150        [Fout.S,Fout.T] = PP2.propPH(Fout.P,Fout.H);
    69151                       
    70152        Fin.F * (Fin.H - Fout.H) = POT_TURB;
     
    75157# Modelo de turbina com sangria
    76158Model Turbina_sangra
    77         PARAMETERS
    78 outer propterm as Plugin(Brief="Steam tables", Type="water");
     159ATTRIBUTES
     160        Pallete = true;
     161        Icon = "icon/turbina_sa";
     162       
     163       
     164        PARAMETERS
     165outer PP2 as Plugin(Brief="Steam tables");
    79166
    80167        VARIABLES
    81168        H_IS            as Entalpia;
    82169        EF_T            as Eficiencia(Brief="Eficiencia da turbina");
    83         POT_TURB        as Potencia(Brief="Potencia da turbina");
     170out POT_TURB    as Potencia(Brief="Potencia da turbina", PosX = 0.9, PosY = 0.45);
    84171        y                       as Fracao(Brief="Fracao massica da sangria");
    85 in      Fin                     as Corrente (Symbol="_{in}");
    86 out Fout                as Corrente (Symbol="_{out}");
    87 out Fouts               as Corrente (Symbol="_{outx}");#(Brief="Sangria da Turbina")
    88 
    89         EQUATIONS
    90 
    91         H_IS = propterm.propPS(Fout.P,Fin.S);
     172in      Fin                     as Corrente (Symbol="_{in}", PosX = 0, PosY = 0.25);
     173out Fout                as Corrente (Symbol="_{out}", PosX = 1, PosY = 0.85);
     174out Fouts               as Corrente (Symbol="_{outx}", PosX = 0.85, PosY = 1); #(Brief="Sangria da Turbina");
     175
     176        EQUATIONS
     177
     178        H_IS = PP2.propPS(Fout.P,Fin.S);
    92179
    93180        Fout.H = (H_IS - Fin.H) * EF_T + Fin.H;
    94181       
    95         [Fout.S,Fout.T] = propterm.propPH(Fout.P,Fout.H);
     182        [Fout.S,Fout.T] = PP2.propPH(Fout.P,Fout.H);
    96183                       
    97184        Fin.F * (Fin.H - Fout.H) = POT_TURB;
     
    107194# Modelo de condensador com uma alimentacao
    108195Model Condensador
    109         PARAMETERS
    110 outer propterm as Plugin(Brief="Steam tables", Type="water");
    111        
    112         VARIABLES
    113         Q_COND  as Potencia (Brief="Taxa de calor removido");
     196        ATTRIBUTES
     197        Pallete = true;
     198        Icon = "icon/condensador";
     199
     200        PARAMETERS
     201outer PP2 as Plugin(Brief="Steam tables");
     202       
     203        VARIABLES
     204out     Q_COND  as Potencia (Brief="Taxa de calor removido",PosX = 1, PosY = 0.5);
    114205        G_S             as Dif_Temp (Brief="Grau de sub-resfriamento");
    115 in      Fin             as Corrente (Symbol="_{in}");
    116 out     Fout    as Corrente (Symbol="_{out}");
     206in      Fin             as Corrente (Symbol="_{in}", PosX = 0.5, PosY = 0);
     207out     Fout    as Corrente (Symbol="_{out}", PosX = 0.5, PosY = 1);
    117208
    118209        EQUATIONS
    119210
    120211        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);
     212        Fout.T = PP2.Tsat(Fout.P) - G_S;
     213       
     214        [Fout.S,Fout.H] = PP2.propPTl(Fout.P,Fout.T);
    124215         
    125216        Q_COND = Fin.F * (Fin.H - Fout.H);
     
    130221Model Condensador_2alim
    131222        PARAMETERS
    132 outer propterm as Plugin(Brief="Steam tables", Type="water");
     223outer PP2 as Plugin(Brief="Steam tables");
    133224   
    134225        VARIABLES
     
    142233
    143234        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);
     235        Fout.T = PP2.Tsat(Fout.P) - G_S;
     236       
     237        [Fout.S,Fout.H] = PP2.propPTl(Fout.P,Fout.T);
    147238
    148239        Fout.F = Fin1.F + Fin2.F;
     
    150241end
    151242
    152 # Modelo de tanque de armazenamento com tres alimentacoes
     243# Modelo de tanque de armazenamento com dois alimentacoes
     244Model Tanque2
     245        ATTRIBUTES
     246        Pallete = true;
     247        Icon = "icon/tanque2";
     248        PARAMETERS
     249outer PP2 as Plugin(Brief="Steam tables");
     250       
     251    VARIABLES
     252in      Fin1    as Corrente (Symbol="_{in1}",PosX = 0.1, PosY = 0.20);
     253in      Fin2    as Corrente (Symbol="_{in2}",PosX = 0.1, PosY = 0.79);
     254out     Fout    as Corrente (Symbol="_{out}",PosX = 0.9, PosY = 0.5);
     255
     256        EQUATIONS
     257
     258        Fout.F = Fin1.F + Fin2.F;
     259        Fout.F * Fout.H = Fin1.F * Fin1.H + Fin2.F * Fin2.H;
     260
     261        [Fout.S,Fout.T] = PP2.propPH(Fout.P,Fout.H);
     262end
     263
     264# Modelo de tanque de armazenamento com tres alimentacoes sem perdas
     265
    153266Model Tanque
    154         PARAMETERS
    155 outer propterm as Plugin(Brief="Steam tables", Type="water");
     267
     268        PARAMETERS
     269
     270outer PP2 as Plugin(Brief="Steam tables");
     271
     272       
     273
     274    VARIABLES
     275
     276in      Fin1    as Corrente (Symbol="_{in1}");
     277
     278in      Fin2    as Corrente (Symbol="_{in2}");
     279
     280in      Fin3    as Corrente (Symbol="_{in3}");
     281
     282out     Fout    as Corrente (Symbol="_{out}");
     283
     284
     285
     286        EQUATIONS
     287
     288
     289
     290        Fout.F = Fin1.F + Fin2.F + Fin3.F;
     291
     292        Fout.F * Fout.H = Fin1.F * Fin1.H + Fin2.F * Fin2.H + Fin3.F * Fin3.H;
     293
     294
     295
     296        [Fout.S,Fout.T] = PP2.propPH(Fout.P,Fout.H);
     297
     298end
     299
     300
     301
     302# Modelo de tanque de armazenamento com tres alimentacoes e perdas
     303Model Tanque3
     304        PARAMETERS
     305outer PP2 as Plugin(Brief="Steam tables");
    156306       
    157307    VARIABLES
     
    160310in      Fin3    as Corrente (Symbol="_{in3}");
    161311out     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);
     312out Fperda      as Corrente (Symbol="_{perda}");
     313
     314        EQUATIONS
     315
     316        Fout.F = Fin1.F + Fin2.F + Fin3.F - Fperda.F;
     317        Fout.F * Fout.H = Fin1.F * Fin1.H + Fin2.F * Fin2.H + Fin3.F * Fin3.H - Fperda.F*Fperda.H;
     318
     319        [Fout.S,Fout.T] = PP2.propPH(Fout.P,Fout.H);
     320        Fperda.S = Fout.S;
     321        Fperda.T = Fout.T;
     322        Fperda.P = Fout.P;
     323        Fperda.H = Fout.H;
     324       
     325end
     326
     327
     328# Modelo de tanque de armazenamento com quatro alimentacoes
     329Model Tanque4
     330        PARAMETERS
     331outer PP2 as Plugin(Brief="Steam tables");
     332       
     333    VARIABLES
     334in      Fin1    as Corrente (Symbol="_{in1}");
     335in      Fin2    as Corrente (Symbol="_{in2}");
     336in      Fin3    as Corrente (Symbol="_{in3}");
     337in      Fin4    as Corrente (Symbol="_{in4}");
     338out     Fout    as Corrente (Symbol="_{out}");
     339
     340        EQUATIONS
     341
     342        Fout.F = Fin1.F + Fin2.F + Fin3.F + Fin4.F;
     343        Fout.F * Fout.H = Fin1.F * Fin1.H + Fin2.F * Fin2.H + Fin3.F * Fin3.H + Fin4.F * Fin4.H;
     344
     345        [Fout.S,Fout.T] = PP2.propPH(Fout.P,Fout.H);
     346end
     347
     348
     349# Modelo de tanque de armazenamento com quatro alimentacoes e perdas
     350
     351
     352
     353Model Tanque4perdas
     354        ATTRIBUTES
     355        Pallete = true;
     356        Icon = "icon/tanque4perdas";
     357       
     358        PARAMETERS
     359outer PP2 as Plugin(Brief="Steam tables");
     360       
     361    VARIABLES
     362        y       as Fracao(Brief="Fracao massica de perdas");
     363        Fsalida as VazaoMassica;
     364in      Fin1    as Corrente (Symbol="_{in1}", PosX = 0.1, PosY = 0.16);
     365in      Fin2    as Corrente (Symbol="_{in2}", PosX = 0.1, PosY = 0.35);
     366in      Fin3    as Corrente (Symbol="_{in3}", PosX = 0.1, PosY = 0.55);
     367in      Fin4    as Corrente (Symbol="_{in4}", PosX = 0.1, PosY = 0.75);
     368out     Fout    as Corrente (Symbol="_{out}", PosX = 1, PosY = 0.45);
     369out Fperda  as Corrente (Symbol="_{perdas}",PosX = 0.5, PosY = 1);
     370
     371        EQUATIONS
     372
     373        Fout.F = Fin1.F + Fin2.F + Fin3.F + Fin4.F - Fperda.F;
     374        Fsalida= Fin1.F + Fin2.F + Fin3.F + Fin4.F;
     375        Fperda.F=y*Fsalida;
     376       
     377        Fout.F * Fout.H = Fin1.F * Fin1.H + Fin2.F * Fin2.H + Fin3.F * Fin3.H +
     378        Fin4.F * Fin4.H - Fperda.F*Fperda.H;
     379
     380        [Fout.S,Fout.T] = PP2.propPH(Fout.P,Fout.H);
     381        Fperda.S = Fout.S;
     382        Fperda.T = Fout.T;
     383        Fperda.P = Fout.P;
     384        Fperda.H = Fout.H;
     385end
     386
     387# Modelo de desaerador (tanque) com 5 entradas e saída líquido saturado (x=0)
     388Model Desaerador5
     389        ATTRIBUTES
     390        Pallete = true;
     391        Icon = "icon/desaerador";
     392        PARAMETERS
     393outer PP2 as Plugin(Brief="Steam tables");
     394       
     395    VARIABLES
     396in      Fin1    as Corrente (Symbol="_{in1}", PosX = 1, PosY = 0.2);
     397in      Fin2    as Corrente (Symbol="_{in2}", PosX = 1, PosY = 0.45);
     398in      Fin3    as Corrente (Symbol="_{in3}", PosX = 1, PosY = 0.7);
     399in      Fin4    as Corrente (Symbol="_{in4}", PosX = 1, PosY = 0.9);
     400in      Fin5    as Corrente (Symbol="_{in5}", PosX = 0.5, PosY = 0);
     401out     Fout    as Corrente (Symbol="_{out}", PosX = 0, PosY = 0.85);
     402
     403        EQUATIONS
     404
     405        Fout.F = Fin1.F + Fin2.F + Fin3.F + Fin4.F + Fin5.F;
     406        Fout.F * Fout.H = Fin1.F * Fin1.H + Fin2.F * Fin2.H + Fin3.F * Fin3.H + Fin4.F * Fin4.H + Fin5.F * Fin5.H;
     407        #Fout.T = PP2.Tsat(Fout.P);
     408
     409        [Fout.S,Fout.H] = PP2.propPTl(Fout.P,Fout.T);
    169410end
    170411
     
    172413Model Trocador
    173414        PARAMETERS
    174 outer propterm as Plugin(Brief="Steam tables", Type="water");
     415outer PP2 as Plugin(Brief="Steam tables");
    175416       
    176417    VARIABLES
     
    185426        Fout.P = Fin.P - DP;
    186427        Fout.F * (Fout.H - Fin.H) = Q;
    187         [Fout.S,Fout.T] = propterm.propPH(Fout.P,Fout.H);
     428        [Fout.S,Fout.T] = PP2.propPH(Fout.P,Fout.H);
    188429end
    189430
    190431# Modelo de torre de refrigeracao
    191432Model Torre
     433        ATTRIBUTES
     434        Pallete = true;
     435        Icon = "icon/torreresf";
     436
    192437        PARAMETERS
    193438        cpa             as CalorEspecifico;
     
    195440        VARIABLES
    196441        F               as VazaoMassica;
    197         Q               as Potencia;
     442in      Qin             as Potencia (Symbol="_{in1}", PosX = 0.1, PosY = 0.5);
    198443        DTh             as Dif_Temp;
    199444        DTc             as Dif_Temp;
     
    210455        DTh = Th - Tar_h;
    211456        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;
     457        F * cpa * (Th - Tc) = Qin;
     458        Uat * (DTh - DTc) = Qin * ln(abs(DTh/DTc));
     459#       Uat * 0.5 * (DTh + DTc) = Qin;
    215460end
    216461
    217462# Modelo de bomba
    218463Model Bomba
    219         PARAMETERS
    220 outer propterm as Plugin(Brief="Steam tables", Type="water");
    221         v_esp     as VolumeEspecifico;
     464        ATTRIBUTES
     465        Pallete = true;
     466        Icon = "icon/bomba1";
     467               
     468       
     469        PARAMETERS
     470outer PP2 as Plugin(Brief="Steam tables");
     471#       v_esp     as VolumeEspecifico;
    222472       
    223473        VARIABLES
    224474        H_IS    as Entalpia;
    225         POT_BMB as Potencia(Brief="Potencia do motor da bomba");
     475out     POT_BMB as Pot_sinal(Brief="Potencia do motor da bomba", PosX = 0.5, PosY = 1 );
    226476        POT_EF  as Potencia(Brief="Potencia injetada pela bomba");
    227477        EF_B    as Eficiencia(Brief="Eficiencia da bomba");
    228478in      Fin             as Corrente (Symbol="_{in}");
    229 out     Fout    as Corrente (Symbol="_{out}");
    230        
    231         EQUATIONS
    232 
    233         H_IS = propterm.propPS(Fout.P,Fin.S);
     479out     Fout    as Corrente (Symbol="_{out}",PosX = 0, PosY = 0.2);
     480        v_esp     as VolumeEspecifico;
     481
     482        EQUATIONS
     483
     484        v_esp = PP2.Vesp(Fin.P,Fin.T);
     485       
     486        H_IS = PP2.propPS(Fout.P,Fin.S);
    234487
    235488        (Fout.H - Fin.H) * EF_B = H_IS - Fin.H;
    236489#       (Fout.H - Fin.H) * Fin.F = POT_EF; # Forma alternativa
    237490       
    238         [Fout.S,Fout.T] = propterm.propPH(Fout.P,Fout.H);
     491        [Fout.S,Fout.T] = PP2.propPH(Fout.P,Fout.H);
    239492
    240493        POT_EF = POT_BMB * EF_B;
     
    243496end
    244497
     498
    245499# Modelo de gerador de vapor
    246500Model Gerador_Vapor
    247         PARAMETERS
    248 outer propterm as Plugin(Brief="Steam tables", Type="water");
    249 
    250     VARIABLES
    251         Q_GV            as Potencia (Brief="Taxa de calor gerado na caldeira");
     501        ATTRIBUTES
     502    Pallete = true;
     503        Icon = "icon/caldeira";
     504
     505        PARAMETERS
     506outer PP2 as Plugin(Brief="Steam tables");
     507
     508    VARIABLES
     509out     Q_GV            as Pot_sinal (Brief="Taxa de calor gerado na caldeira", PosX = 1, PosY = 0.5);
    252510        EF_GV           as Eficiencia (Brief="Eficiencia do gerador de vapor");
    253511        Qra                     as Potencia (Brief="Taxa de calor nos reaquecedores");
     
    255513        Qca                     as Potencia (Brief="Taxa de calor no evaporador");
    256514        Qec                     as Potencia (Brief="Taxa de calor nos economizadores");
    257 in      Fin_a           as Corrente (Brief="Agua de alimentacao", Symbol="_{in_a}");
    258 in      Fin_ra          as Corrente (Brief="Vapor a ser Reaquecido", Symbol="_{in_ra}");
    259 out     Fout_sa     as Corrente (Brief="Vapor Superaquecido", Symbol="_{out_sa}");
    260 out     Fout_ra     as Corrente (Brief="Vapor Reaquecido", Symbol="_{out_ra}");
     515in      Fin_a           as Corrente (Brief="Agua de alimentacao", Symbol="_{in_a}", PosX = 0.5, PosY = 1);
     516in      Fin_ra          as Corrente (Brief="Vapor a ser Reaquecido", Symbol="_{in_ra}", PosX = 0.7, PosY = 1);
     517out     Fout_sa     as Corrente (Brief="Vapor Superaquecido", Symbol="_{out_sa}", PosX = 0.5, PosY = 0);
     518out     Fout_ra     as Corrente (Brief="Vapor Reaquecido", Symbol="_{out_ra}", PosX = 0.7, PosY = 0);
    261519        Fvap            as Corrente (Brief="Evaporador");
    262520        Feco            as Corrente (Brief="Economizadores");
     
    264522        EQUATIONS
    265523
    266 #       [Fin_a.S,Fin_a.H] = propterm.propPTl(Fin_a.P,Fin_a.T); # Reduntante no ciclo fechado
     524#       [Fin_a.S,Fin_a.H] = PP2.propPTl(Fin_a.P,Fin_a.T); # Reduntante no ciclo fechado
    267525
    268526        "Economizadores ECO1 + ECO1"
    269527#       Feco.F = Fin_a.F; # Reduntante no ciclo fechado
    270         [Feco.S,Feco.H] = propterm.propPTv(Feco.P,Feco.T);     
     528        [Feco.S,Feco.H] = PP2.propPTv(Feco.P,Feco.T);   
    271529        Qec = Feco.F * (Feco.H - Fin_a.H);
    272530
    273531        "Evaporador - Camisa dagua"
    274532        Fvap.F = Feco.F;
    275         [Fvap.S,Fvap.H] = propterm.propPTv(Fvap.P,Fvap.T);     
     533        [Fvap.S,Fvap.H] = PP2.propPTv(Fvap.P,Fvap.T);   
    276534        Qca = Fvap.F * (Fvap.H - Feco.H);
    277535
    278536        "Superaquecedores BT + AT"
    279537        Fout_sa.F = Fvap.F;
    280         [Fout_sa.S,Fout_sa.H] = propterm.propPTv(Fout_sa.P,Fout_sa.T);
     538        [Fout_sa.S,Fout_sa.H] = PP2.propPTv(Fout_sa.P,Fout_sa.T);
    281539        Qsa = Fout_sa.F * (Fout_sa.H - Fvap.H);
    282540
    283541        "Reaquecedores BT + AT"
    284542        Fout_ra.F = Fin_ra.F;
    285         [Fout_ra.S,Fout_ra.H] = propterm.propPTv(Fout_ra.P,Fout_ra.T);
     543        [Fout_ra.S,Fout_ra.H] = PP2.propPTv(Fout_ra.P,Fout_ra.T);
    286544        Qra = Fout_ra.F * (Fout_ra.H - Fin_ra.H);
    287545
     
    290548end
    291549
     550
     551# Modelo de gerador de vapor modificado
     552Model Gerador_VaporMod
     553        ATTRIBUTES
     554    Pallete = true;
     555        Icon = "icon/caldeira";
     556       
     557       
     558        PARAMETERS
     559outer PP2 as Plugin(Brief="Steam tables");
     560
     561    VARIABLES
     562out     Q_GV            as Pot_sinal (Brief="Taxa de calor gerado na caldeira", PosX = 1, PosY = 0.5);
     563        EF_GV           as Eficiencia (Brief="Eficiencia do gerador de vapor");
     564        Qpre            as Potencia (Brief="Taxa de calor no pre aquecedor de ar");
     565        Qsa                     as Potencia (Brief="Taxa de calor nos superaquecedores");
     566        Qca                     as Potencia (Brief="Taxa de calor no evaporador");
     567        Qec                     as Potencia (Brief="Taxa de calor nos economizadores");
     568in      Fin_a           as Corrente (Brief="Agua de alimentacao", Symbol="_{in_a}", PosX = 0.5, PosY = 1);
     569out     Fout_sa     as Corrente (Brief="Vapor Superaquecido", Symbol="_{out_sa}", PosX = 0.5, PosY = 0);
     570        Fvap            as Corrente (Brief="Evaporador");
     571        Feco            as Corrente (Brief="Economizadores");
     572
     573        EQUATIONS
     574
     575#       [Fin_a.S,Fin_a.H] = PP2.propPTl(Fin_a.P,Fin_a.T); # Reduntante no ciclo fechado
     576
     577        "Economizadores ECO1 + ECO1"
     578#       Feco.F = Fin_a.F; # Reduntante no ciclo fechado
     579        [Feco.S,Feco.H] = PP2.propPTv(Feco.P,Feco.T);   
     580        Qec = Feco.F * (Feco.H - Fin_a.H);
     581
     582        "Evaporador - Camisa dagua"
     583        Fvap.F = Feco.F;
     584        [Fvap.S,Fvap.H] = PP2.propPTv(Fvap.P,Fvap.T);   
     585        Qca = Fvap.F * (Fvap.H - Feco.H);
     586
     587        "Superaquecedores BT + AT"
     588        Fout_sa.F = Fvap.F;
     589        [Fout_sa.S,Fout_sa.H] = PP2.propPTv(Fout_sa.P,Fout_sa.T);
     590        Qsa = Fout_sa.F * (Fout_sa.H - Fvap.H);
     591
     592        "Caldeira"
     593        Q_GV * EF_GV = Qec + Qca + Qsa + Qpre;
     594end
     595
     596
    292597# Modelo simplificado gerador de vapor
    293598Model Gerador_Vapor_Simples
    294599        PARAMETERS
    295 outer propterm as Plugin(Brief="Steam tables", Type="water");
     600outer PP2 as Plugin(Brief="Steam tables");
    296601       
    297602        VARIABLES
     
    305610        Fout.P = Fin.P;
    306611       
    307         [Fout.S,Fout.H] = propterm.propPTv(Fout.P,Fout.T);
     612        [Fout.S,Fout.H] = PP2.propPTv(Fout.P,Fout.T);
    308613
    309614        Q_GV * EF_GV = Fin.F * (Fout.H - Fin.H);
     
    313618# Modelo de gerador eletrico
    314619Model Gerador_Eletrico
     620    ATTRIBUTES
     621        Pallete = true;
     622        Icon = "icon/gerador"; 
     623       
    315624        PARAMETERS
    316625        EF_GE as Eficiencia(Brief="Eficiencia do gerador eletrico");
    317626
    318627        VARIABLES
    319         POT_GE as Potencia(Brief="Potencia do gerador eletrico");
    320 end
     628out     POT_GE as Pot_sinal(Brief="Potencia do gerador eletrico", PosX = 1, PosY = 0.5);
     629        POT_TURB as Potencia(Brief="Potencia total das turbinas");
     630in      POT_TURB1 as Potencia(Brief="Potencia total da turbina", PosX = 0, PosY = 0.5);
     631in      POT_TURB2 as Potencia(Brief="Potencia total da turbina", PosX = 0.02, PosY = 0.25);
     632in      POT_TURB3 as Potencia(Brief="Potencia total da turbina", PosX = 0.02, PosY = 0.75);
     633in      POT_TURB4 as Potencia(Brief="Potencia total da turbina", PosX = 0.5, PosY = 1);
     634
     635        EQUATIONS
     636        "Potencia total das turbinas"
     637        POT_TURB = POT_TURB1 + POT_TURB2 + POT_TURB3 + POT_TURB4;
     638       
     639        "Potencia do Gerador Eletrico"
     640        POT_GE = EF_GE * POT_TURB;
     641end
     642
     643# Modelo de gerador eletrico
     644Model Gerador_Eletrico_Simples
     645    ATTRIBUTES
     646        Pallete = true;
     647        Icon = "icon/gerador"; 
     648       
     649        PARAMETERS
     650        EF_GE as Eficiencia(Brief="Eficiencia do gerador eletrico");
     651
     652        VARIABLES
     653out     POT_GE as Pot_sinal(Brief="Potencia do gerador eletrico", PosX = 1, PosY = 0.5);
     654end
     655
    321656
    322657# Modelo de separador de corrente
    323658Model Splitter
     659        ATTRIBUTES
     660        Pallete = true;
     661        Icon = "icon/splitter";
     662       
    324663        VARIABLES
    325664        y                       as Fracao(Brief="Fracao de massa para a segunda corrente");
    326 in      Fin                     as Corrente (Symbol="_{in}");
    327 out     Fout            as Corrente (Symbol="_{out}");
    328 out     Fouts           as Corrente(Brief="Segunda corrente", Symbol="_{outx}");
     665in      Fin                     as Corrente (Symbol="_{in}", PosX = 0, PosY = 0.5);
     666out     Fout            as Corrente (Symbol="_{out}", PosX = 1, PosY = 0.25);
     667out     Fouts           as Corrente(Brief="Segunda corrente", Symbol="_{outx}", PosX = 1, PosY = 0.75);
    329668
    330669        EQUATIONS
     
    343682        Fout.F = Fin.F - Fouts.F;
    344683end
     684
     685
     686# Modelo de separador de corrente de 4 saidas
     687Model Splitter4
     688        ATTRIBUTES
     689        Pallete = true;
     690        Icon = "icon/splitter4";
     691       
     692        VARIABLES
     693        y(3)            as Fracao(Brief="Fracao de massa");
     694in      Fin                     as Corrente (Symbol="_{in}", PosX = 1, PosY = 0.5);
     695out     Fout1           as Corrente (Symbol="_{out1}", PosX = 0, PosY = 0.19);
     696out     Fout2           as Corrente(Symbol="_{out2}", PosX = 0, PosY = 0.4);
     697out     Fout3           as Corrente (Symbol="_{out3}", PosX = 0, PosY = 0.62);
     698out     Fout4           as Corrente(Symbol="_{out4}", PosX = 0, PosY = 0.85);
     699
     700
     701        EQUATIONS
     702
     703        Fout1.P = Fin.P;
     704        Fout1.T = Fin.T;
     705        Fout1.S = Fin.S;
     706        Fout1.H = Fin.H;
     707
     708        Fout2.P = Fin.P;
     709        Fout2.T = Fin.T;
     710        Fout2.S = Fin.S;
     711        Fout2.H = Fin.H;
     712
     713        Fout3.P = Fin.P;
     714        Fout3.T = Fin.T;
     715        Fout3.S = Fin.S;
     716        Fout3.H = Fin.H;
     717       
     718        Fout4.P = Fin.P;
     719        Fout4.T = Fin.T;
     720        Fout4.S = Fin.S;
     721        Fout4.H = Fin.H;
     722       
     723        Fout1.F = Fin.F * y(1);
     724        Fout2.F = Fin.F * y(2);
     725        Fout3.F = Fin.F * y(3);
     726        #Fout4.F = Fin.F * y(4);
     727       
     728       
     729        Fout4.F = Fin.F - Fout1.F - Fout2.F - Fout3.F;
     730end
     731
     732# Modelo de flash provisório, pois o PP tem cálculo de flash mas
     733# esta função não está disponibilizada no plugin (esta função seria mais
     734# eficiente nos cálculos, não teria cálculos repetitivos)
     735Model Flash
     736
     737    ATTRIBUTES
     738        Pallete = true;
     739        Icon = "icon/flash";
     740       
     741        PARAMETERS
     742outer PP2 as Plugin(Brief="Steam tables");
     743       
     744    VARIABLES
     745        TIT             as Fracao (Upper=2);
     746#       S_ad    as Entropia;
     747in      Fin             as Corrente (Symbol="_{in}",PosX = 1, PosY = 0.5);
     748out     FoutL   as Corrente (Symbol="_{outL}", PosX = 0.4, PosY = 1);
     749out     FoutV   as Corrente (Symbol="_{outV}", PosX = 0.4, PosY = 0);
     750
     751        EQUATIONS
     752
     753        Fin.F = FoutL.F + FoutV.F;
     754        FoutV.F = TIT * Fin.F;
     755
     756        FoutL.T = FoutV.T;
     757        FoutL.P = FoutV.P;
     758
     759#       [S_ad,FoutL.T] = PP2.propPH(FoutL.P,Fin.H);
     760#       [FoutV.S,FoutV.H] = PP2.propPTv(FoutV.P,FoutV.T+0.1*'K'); # perturbado para evitar ir para liq.
     761#       [FoutL.S,FoutL.H] = PP2.propPTl(FoutL.P,FoutL.T-0.1*'K'); # perturbado para evitar ir para vap.
     762
     763        [FoutL.S,FoutL.H,FoutV.S,FoutV.H,FoutL.T,TIT] = PP2.FlashPH(FoutL.P,Fin.H);
     764
     765#       TIT * (FoutV.H - FoutL.H) = Fin.H - FoutL.H;
     766end
     767
     768Model ETA_CICLO
     769        ATTRIBUTES
     770        Pallete = true;
     771        Icon = "icon/eficiencia";
     772
     773        VARIABLES
     774        EF_CIC          as Eficiencia;
     775in      POT_BMB1        as Pot_sinal(Symbol = "_{inB1}", PosX = 0.2, PosY = 0);
     776in      POT_BMB2        as Pot_sinal(Symbol = "_{inB2}", PosX = 0.4, PosY = 0);
     777in      POT_BMB3        as Pot_sinal(Symbol = "_{inB3}", PosX = 0.6, PosY = 0);
     778in      POT_BMB4        as Pot_sinal(Symbol = "_{inB4}", PosX = 0.8, PosY = 0);
     779in      POT_BMB5        as Pot_sinal(Symbol = "_{inB5}", PosX = 0.25, PosY = 1);
     780in      POT_GE          as Pot_sinal(Symbol = "_{inGE}", PosX = 0.5, PosY = 1);
     781in      POT_GV          as Pot_sinal(Symbol = "_{inGV}", PosX = 0.75, PosY = 1);
     782
     783
     784        EQUATIONS
     785        "Eficiencia do Ciclo"
     786        EF_CIC * POT_GV = POT_GE - POT_BMB1 - POT_BMB2 - POT_BMB3 - POT_BMB4 - POT_BMB5;
     787
     788end
     789
     790
     791#*---------------------------------------------------------------------
     792*       only vapour phase
     793*--------------------------------------------------------------------*#
     794Model Equil_vap
     795        ATTRIBUTES
     796        Pallete         = true;
     797        Icon            = "icon/cstr";
     798        Brief           = "Model of a generic vapour-phase equilibrium CSTR";
     799        Info            = "
     800== Assumptions ==
     801* only vapour-phase
     802* thermodynamic equilibrium
     803* steady-state
     804
     805== Specify ==
     806* inlet stream
     807* stoichiometric matrix
     808* equilibrium temperature
     809";
     810
     811        PARAMETERS
     812outer PP as Plugin(Brief = "External Physical Properties");
     813        NReac           as Integer              (Brief="Number of reactions", Default=1);
     814    stoic(NComp,NReac) as Real  (Brief="Stoichiometric matrix", Symbol="\nu");
     815        Rg                      as Real                 (Brief="Universal gas constant", Unit='J/mol/K', Default=8.314);
     816        fs(NComp)       as Pressao              (Brief="Fugacity in standard state", Default=1, DisplayUnit='atm');
     817        To                      as Temperatura  (Brief="Reference temperature", Default=298.15);
     818        V                       as Volume;
     819        Mw(NComp)       as molweight;
     820
     821        VARIABLES
     822in      Inlet           as CorrenteZ    (Brief="Inlet stream", PosX=0, PosY=0, Symbol="_{in}");
     823out Outlet              as CorrenteVap  (Brief="Outlet stream", PosX=1, PosY=1, Symbol="_{out}");
     824
     825        G(NComp)        as EntalpiaMol  (Brief="Gibbs free-energy of formation");
     826        K(NReac)        as Real                 (Brief="Equillibrium constant", Lower=0, Default=1.5);
     827        activ(NComp)as Real             (Brief="Activity", Symbol="\hat{a}", Lower=0, Default=0.2);
     828       
     829        rate(NComp) as Reacao_mol       (Brief="Overall component rate of reaction");
     830        extent(NReac) as VazaoMolar     (Brief="Extent of reaction", Symbol="\xi");
     831        conv(NComp) as Real             (Brief="Fractional conversion of component", Symbol="X", Default=0); # Lower=-1e3, Upper=1e3);
     832
     833        SET
     834        Mw = PP.MolecularWeight();
     835
     836        EQUATIONS
     837        "Outlet stream"
     838        Outlet.F*Outlet.z = Inlet.F*Inlet.z + rate*V*Mw;
     839       
     840        "Mechanical equilibrium"
     841        Outlet.P = Inlet.P;
     842       
     843        "Energy balance"
     844        Outlet.F*Outlet.H = Inlet.F*Inlet.H;
     845       
     846        "Steady-state"
     847        Outlet.F = Inlet.F + sum(sumt(stoic*extent)*Mw);
     848
     849        "Gibbs free-energy of formation"
     850        G = PP.IdealGasGibbsOfFormation(Outlet.T);
     851
     852#       "Gibbs free-energy of formation without Cp correction"
     853#       G = PP.IdealGasGibbsOfFormationAt25C()*Outlet.T/To
     854#               + PP.IdealGasEnthalpyOfFormationAt25C()*(1 - Outlet.T/To);
     855
     856        for j in [1:NReac] do
     857        "Gibbs free energy of reaction"
     858                sumt(G*stoic(:,j)) = -Rg*Outlet.T*ln(K(j));
     859#               K(j) = exp(-sumt(G*stoic(:,j))/(Rg*Outlet.T));
     860
     861        "Equilibrium constant"
     862                K(j) = prod(activ^stoic(:,j));
     863        end
     864
     865        for i in [1:NComp] do
     866        "Outlet molar fraction"
     867                Outlet.F*Outlet.z(i) = (Inlet.F*Inlet.z(i) + sumt(stoic(i,:)*extent)*Mw);
     868        end     
     869
     870        for i in [1:NComp] do
     871          if (Inlet.z(i) > 1e-16) then
     872            "Molar conversion"
     873            Outlet.F*Outlet.z(i) = Inlet.F*Inlet.z(i)*(1 - conv(i));
     874          else if (Outlet.z(i) > 0) then
     875                        "Molar conversion"
     876                                conv(i) = 1;    # ?
     877                        else
     878                        "Molar conversion"
     879                                conv(i) = 0;    # ?
     880                        end
     881          end
     882        end
     883
     884        "Activity"
     885        activ = PP.VapourFugacityCoefficient(Outlet.T,Outlet.P,Outlet.z)*Outlet.P*Outlet.z/fs;
     886end
     887
Note: See TracChangeset for help on using the changeset viewer.