Changeset 243 for trunk/eml


Ignore:
Timestamp:
Apr 16, 2007, 2:19:39 PM (16 years ago)
Author:
Paula Bettio Staudt
Message:

Updated reactive distillation models andsample

Location:
trunk/eml
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/eml/controllers/PIDs.mso

    r176 r243  
    9797        if (Parameters.tau equal 0) then
    9898                "Input first order filter"
    99                 (Parameters.tau + 1e-3*"s")*diff(Internal.inputFilt)= Ports.input - Internal.inputFilt;
     99                (Parameters.tau + 1e-3*'s')*diff(Internal.inputFilt)= Ports.input - Internal.inputFilt;
    100100        else
    101101                "Input first order filter"
     
    105105        if (Parameters.tauSet equal 0) then
    106106                "setPoint first order filter"
    107                 (Parameters.tauSet + 1e-3*"s")*diff(Internal.setPointFilt)= Ports.setPoint - Internal.setPointFilt;
     107                (Parameters.tauSet + 1e-3*'s')*diff(Internal.setPointFilt)= Ports.setPoint - Internal.setPointFilt;
    108108        else
    109109                "setPoint first order filter"
     
    132132        if (Parameters.derivTime equal 0) then
    133133                "Derivative term filter"       
    134                 Parameters.alpha*(Parameters.derivTime + 1e-3*"s")*diff(Internal.dFilt) = Internal.errorD - Internal.dFilt;
     134                Parameters.alpha*(Parameters.derivTime + 1e-3*'s')*diff(Internal.dFilt) = Internal.errorD - Internal.dFilt;
    135135        else
    136136                "Derivative term filter"       
  • trunk/eml/stage_separators/column.mso

    r210 r243  
    930930Model ReactiveDistillation
    931931        PARAMETERS
    932         outer PP as Plugin(Brief = "External Physical Properties", Type="PP");
    933         outer NComp as Integer;
    934         NTrays as Integer(Brief="Number of trays", Default=2);
     932        outer PP as Plugin(Type="PP");
     933        outer NComp as Integer;
     934        NTrays as Integer(Brief="Number of trays", Default=2);
     935        topdown as Integer(Brief="Trays counting (1=top-down, -1=bottom-up)", Default=1);
     936        top as Integer(Brief="Number of top tray");
     937        bot as Integer(Brief="Number of bottom tray");
     938        alfacond as Real;
     939
     940        VapourFlow as Switcher(Valid = ["on", "off"], Default = "off");
     941       
     942        SET
     943        top = (NTrays-1)*(1-topdown)/2+1;
     944        bot = NTrays/top;
    935945       
    936946        VARIABLES
     
    942952       
    943953        EQUATIONS
    944         if ( reb.OutletV.P > 1 * 'atm' ) then
    945                 "Pressure Drop through the tray"
    946                 reb.OutletV.F = trays(1).Ah/reb.vV * sqrt((reb.OutletV.P - 1*'atm') / (0.15*reb.rhoV) );
    947         else
     954       
     955        switch VapourFlow
     956                case "on":
     957                "Pressure Drop through the condenser"
     958                cond.InletV.F*trays(top).vV / 'm^2' =
     959                        sqrt((trays(top).OutletV.P - cond.OutletL.P + 1e-8 * 'atm')/(trays(top).rhoV*alfacond));
     960                when trays(top).OutletV.P < cond.OutletL.P switchto "off";
     961               
     962                case "off":
    948963                "Prato selado"
    949                 reb.OutletV.F = 0.0 * 'mol/s';
     964                cond.InletV.F = 0.0 * 'mol/s';
     965                when trays(top).OutletV.P > cond.OutletL.P + 1e-3 * 'atm' switchto "on";
    950966        end
    951        
    952         CONNECTIONS
    953         #vapor
    954         reb.OutletV to trays([NTrays]).InletV;
    955         trays([2:NTrays]).OutletV to trays([1:NTrays-1]).InletV;
    956         trays(1).OutletV to cond.InletV;
    957 
     967
     968        CONNECTIONS
     969        #vapor
     970        reb.OutletV to trays(bot).InletV;
     971        trays([top+topdown:topdown:bot]).OutletV to trays([top:topdown:bot-topdown]).InletV;
     972        trays(top).OutletV to cond.InletV;
     973       
    958974        #liquid
    959975        cond.OutletL to sp.Inlet;       
    960976        sp.Outlet2 to p.Inlet;
    961         p.Outlet to trays(1).InletL;
    962         trays([1:NTrays-1]).OutletL to trays([2:NTrays]).InletL;
    963         trays(NTrays).OutletL to reb.InletL;
    964 end
     977        p.Outlet to trays(top).InletL;
     978        trays([top:topdown:bot-topdown]).OutletL to trays([top+topdown:topdown:bot]).InletL;
     979        trays(bot).OutletL to reb.InletL;
     980       
     981end
  • trunk/eml/stage_separators/condenser.mso

    r210 r243  
    135135Model condenserReact
    136136        PARAMETERS
    137         outer PP as Plugin(Brief = "External Physical Properties", Type="PP");
     137        outer PP as Plugin(Type="PP");
    138138        outer NComp as Integer;
    139139        V as volume (Brief="Condenser total volume");
     
    158158        Q as heat_rate (Brief="Heat supplied");
    159159        Vol as volume;
    160         r as reaction_mol (Brief = "Specific reaction rate");
     160        r3 as reaction_mol (Brief = "Reaction resulting ethyl acetate", DisplayUnit = 'mol/l/s');
    161161        C(NComp) as conc_mol (Brief = "Molar concentration", Lower = -1);
    162162
     
    165165        OutletL.z = vL * C;
    166166       
     167        "Reaction"
     168        r3 = exp(-7150*'K'/OutletL.T)*(4.85e4*C(1)*C(2) - 1.23e4*C(3)*C(4)) * 'l/mol/s';
     169       
    167170        "Component Molar Balance"
    168171        diff(M) = InletV.F*InletV.z - OutletL.F*OutletL.z
    169                                 - OutletV.F*OutletV.z + stoic*r*ML*vL;
     172                                - OutletV.F*OutletV.z + stoic*r3*ML*vL;
    170173
    171174        "Energy Balance"
    172175        diff(E) = InletV.F*InletV.h - OutletL.F*OutletL.h
    173                                 - OutletV.F*OutletV.h + Q + Hr * r * ML*vL;
     176                                - OutletV.F*OutletV.h + Q + Hr * r3 * ML*vL;
    174177
    175178        "Molar Holdup"
     
    206209
    207210        sum(OutletL.z)=sum(OutletV.z);
     211
    208212end
  • trunk/eml/stage_separators/reboiler.mso

    r210 r243  
    191191Model reboilerReact
    192192        PARAMETERS
    193         outer PP as Plugin(Brief = "External Physical Properties", Type="PP");
     193        outer PP as Plugin(Type="PP");
    194194        outer NComp as Integer;
    195195        Across as area (Brief="Cross Section Area of reboiler");
     
    217217        startup as Real;
    218218        rhoV as dens_mass;
    219         r as reaction_mol (Brief = "Specific reaction rate");
     219        r3 as reaction_mol (Brief = "Reaction resulting ethyl acetate", DisplayUnit = 'mol/l/s');
    220220        C(NComp) as conc_mol (Brief = "Molar concentration", Lower = -1);
    221221
     
    224224        OutletL.z = vL * C;
    225225       
     226        "Reaction"
     227        r3 = exp(-7150*'K'/OutletL.T)*(4.85e4*C(1)*C(2) - 1.23e4*C(3)*C(4)) * 'l/mol/s';
     228
    226229        "Component Molar Balance"
    227230        diff(M)= Inlet.F*Inlet.z + InletL.F*InletL.z
    228                 - OutletL.F*OutletL.z - OutletV.F*OutletV.z + stoic*r*ML*vL;
     231                - OutletL.F*OutletL.z - OutletV.F*OutletV.z + stoic*r3*ML*vL;
    229232       
    230233        "Energy Balance"
    231234        diff(E) = Inlet.F*Inlet.h + InletL.F*InletL.h
    232                 - OutletL.F*OutletL.h - OutletV.F*OutletV.h + Q + Hr * r * vL*ML;
     235                - OutletL.F*OutletL.h - OutletV.F*OutletV.h + Q + Hr * r3 * vL*ML;
    233236       
    234237        "Molar Holdup"
     
    260263       
    261264        "Geometry Constraint"
    262         V = ML*vL + MV*vV;
     265        V = ML*vL + MV*vV;             
    263266
    264267        "Chemical Equilibrium"
  • trunk/eml/stage_separators/tray.mso

    r210 r243  
    159159
    160160        PARAMETERS
    161         outer PP as Plugin(Brief = "External Physical Properties", Type="PP");
     161        outer PP as Plugin(Type="PP");
    162162        outer NComp as Integer;
    163163        V as volume(Brief="Total Volume of the tray");
     
    175175        Hr as energy_mol;
    176176        Pstartup as pressure;
     177       
     178        VapourFlow as Switcher(Valid = ["on", "off"], Default = "off");
     179        LiquidFlow as Switcher(Valid = ["on", "off"], Default = "off");
    177180       
    178181        VARIABLES
     
    197200        rhoL as dens_mass;
    198201        rhoV as dens_mass;
    199         r as reaction_mol (Brief = "Specific reaction rate");
     202        r3 as reaction_mol (Brief = "Reaction resulting ethyl acetate", DisplayUnit = 'mol/l/s');
    200203        C(NComp) as conc_mol (Brief = "Molar concentration", Lower = -1); #, Unit = "mol/l");
    201204       
     
    204207        OutletL.z = vL * C;
    205208       
     209        "Reaction"
     210        r3 = exp(-7150*'K'/OutletL.T)*(4.85e4*C(1)*C(2) - 1.23e4*C(3)*C(4))*'l/mol/s';
     211       
    206212        "Component Molar Balance"
    207213        diff(M)=Inlet.F*Inlet.z + InletL.F*InletL.z + InletV.F*InletV.z
    208                 - OutletL.F*OutletL.z - OutletV.F*OutletV.z + stoic*r*ML*vL;
     214                - OutletL.F*OutletL.z - OutletV.F*OutletV.z + stoic*r3*ML*vL;
    209215       
    210216        "Energy Balance"
    211217        diff(E) = ( Inlet.F*Inlet.h + InletL.F*InletL.h + InletV.F*InletV.h
    212                 - OutletL.F*OutletL.h - OutletV.F*OutletV.h + Q ) + Hr * r * vL*ML;
     218                - OutletL.F*OutletL.h - OutletV.F*OutletV.h + Q ) + Hr * r3 * vL*ML;
    213219       
    214220        "Molar Holdup"
     
    242248        rhoV = PP.VapourDensity(InletV.T, InletV.P, InletV.z);
    243249
    244         if Level > (beta * hw) then
     250        switch LiquidFlow
     251                case "on":
    245252                "Francis Equation"
    246                 OutletL.F = (1.84/'s'*lw*((Level-(beta*hw))/(beta))^2/vL);
    247         else
     253                OutletL.F*vL = 1.84*'1/s'*lw*((Level-(beta*hw)+1e-6*'m')/(beta))^2;
     254                when Level < (beta * hw) switchto "off";
     255               
     256                case "off":
    248257                "Low level"
    249258                OutletL.F = 0 * 'mol/h';
     259                when Level > (beta * hw) + 1e-6*'m' switchto "on";
    250260        end
    251261
     262        switch VapourFlow
     263                case "on":
     264                #InletV.P = OutletV.P + Level*g*rhoL + rhoV*alfa*(InletV.F*vV/Ah)^2;
     265                InletV.F*vV = sqrt((InletV.P - OutletV.P - Level*g*rhoL + 1e-8 * 'atm')/(rhoV*alfa))*Ah;
     266                when InletV.P < OutletV.P + Level*g*rhoL switchto "off";
    252267               
    253         "Pressure Drop through the tray"
    254         OutletV.F = (1 + tanh(1 * (OutletV.P - Pstartup)/'Pa'))/2 *
    255                 Ah/vV * sqrt(2*(OutletV.P - InletL.P + 1e-8 * 'atm') / (alfa*rhoV) );
     268                case "off":
     269                InletV.F = 0 * 'mol/s';
     270                when InletV.P > OutletV.P + Level*g*rhoL + 3e-2 * 'atm' switchto "on";
     271                #when InletV.P > OutletV.P + Level*beta*g*rhoL + 1e-2 * 'atm' switchto "on";
     272        end
    256273
    257274        "Chemical Equilibrium"
Note: See TracChangeset for help on using the changeset viewer.