Ignore:
Timestamp:
Nov 5, 2009, 3:59:14 PM (13 years ago)
Author:
gerson bicca
Message:

tray/column revised

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/gui/eml/stage_separators/tray.mso

    r875 r878  
    2020using "streams";
    2121
    22 Model trayBasic
    23         ATTRIBUTES
     22Model tray
     23
     24ATTRIBUTES
    2425        Pallete         = false;
    2526        Icon            = "icon/Tray";
    26         Brief           = "Basic equations of a tray column model.";
     27        Brief           = "Complete model of a column tray.";
    2728        Info            =
    28 "This model contains only the main equations of a column tray equilibrium model without
    29 the hidraulic equations.
    30        
    31 == Assumptions ==
     29"== Assumptions ==
    3230* both phases (liquid and vapour) exists all the time;
    3331* thermodymanic equilibrium with Murphree plate efficiency;
     
    3533* no weeping;
    3634* the dymanics in the downcomer are neglected.
    37 ";
    38        
    39 PARAMETERS
    40 outer PP                        as Plugin               (Brief = "External Physical Properties", Type="PP");
    41 outer NComp     as Integer;
    42 
    43 VARIABLES
    44 
    45         Inlet                                                   as stream                               (Brief="Feed stream", Hidden=true, PosX=0, PosY=0.4932, Symbol="_{in}");
    46         LiquidSideStream                as liquid_stream        (Brief="liquid Sidestream", Hidden=true, Symbol="_{outL}");
    47         VapourSideStream        as vapour_stream        (Brief="vapour Sidestream", Hidden=true, Symbol="_{outV}");
    48 
    49 in      InletLiquid                     as stream                               (Brief="Inlet liquid stream", PosX=0.5195, PosY=0, Symbol="_{inL}");
    50 in      InletVapour                     as stream                               (Brief="Inlet vapour stream", PosX=0.4994, PosY=1, Symbol="_{inV}");
    51 out     OutletLiquid    as liquid_stream        (Brief="Outlet liquid stream", PosX=0.8277, PosY=1, Symbol="_{outL}");
    52 out     OutletVapour    as vapour_stream        (Brief="Outlet vapour stream", PosX=0.8043, PosY=0, Symbol="_{outV}");
    53 
    54 
    55         M(NComp)                        as mol                          (Brief="Molar Holdup in the tray");
    56         ML                                              as mol                          (Brief="Molar liquid holdup");
    57         MV                                              as mol                          (Brief="Molar vapour holdup");
    58         E                                                       as energy                       (Brief="Total Energy Holdup on tray");
    59         vL                                              as volume_mol   (Brief="Liquid Molar Volume");
    60         vV                                              as volume_mol   (Brief="Vapour Molar volume");
    61         Level                                   as length                       (Brief="Height of clear liquid on plate");
    62         yideal(NComp)           as fraction;
    63 
    64 
    65 EQUATIONS
    66 "Component Molar Balance"
    67         diff(M)=Inlet.F*Inlet.z + InletLiquid.F*InletLiquid.z + InletVapour.F*InletVapour.z- OutletLiquid.F*OutletLiquid.z - OutletVapour.F*OutletVapour.z-
    68         LiquidSideStream.F*LiquidSideStream.z-VapourSideStream.F*VapourSideStream.z;
    69 
    70 "Molar Holdup"
    71         M = ML*OutletLiquid.z + MV*OutletVapour.z;
    72 
    73 "Mol fraction normalisation"
    74         sum(OutletLiquid.z)= 1.0;
    75         sum(OutletLiquid.z)= sum(OutletVapour.z);
    76 
    77 "Liquid Volume"
    78         vL = PP.LiquidVolume(OutletLiquid.T, OutletLiquid.P, OutletLiquid.z);
    79 
    80 "Vapour Volume"
    81         vV = PP.VapourVolume(OutletVapour.T, OutletVapour.P, OutletVapour.z);
    82 
    83 "Chemical Equilibrium"
    84         PP.LiquidFugacityCoefficient(OutletLiquid.T, OutletLiquid.P, OutletLiquid.z)*OutletLiquid.z = PP.VapourFugacityCoefficient(OutletVapour.T, OutletVapour.P, yideal)*yideal;
    85 
    86 "Thermal Equilibrium"
    87         OutletVapour.T = OutletLiquid.T;
    88 
    89 "Mechanical Equilibrium"
    90         OutletVapour.P = OutletLiquid.P;
    91        
    92 "Thermal Equilibrium Vapour Side Stream"
    93         OutletVapour.T = VapourSideStream.T;
    94 
    95 "Thermal Equilibrium Liquid Side Stream"
    96         OutletLiquid.T = LiquidSideStream.T;
    97 
    98 "Mechanical Equilibrium Vapour Side Stream"
    99         OutletVapour.P= VapourSideStream.P;
    100 
    101 "Mechanical Equilibrium Liquid Side Stream"
    102         OutletLiquid.P = LiquidSideStream.P;
    103 
    104 "Composition Liquid Side Stream"
    105         OutletLiquid.z= LiquidSideStream.z;
    106        
    107 "Composition Vapour Side Stream"
    108         OutletVapour.z= VapourSideStream.z;
    109 
    110 end
    111 
    112 Model tray as trayBasic
    113         ATTRIBUTES
    114         Pallete         = false;
    115         Icon            = "icon/Tray";
    116         Brief           = "Complete model of a column tray.";
    117         Info            =
    118 "== Specify ==
    119 * the Feed stream
    120 * the Liquid inlet stream
    121 * the Vapour inlet stream
    122 * the Vapour outlet flow (OutletVapour.F)
    123        
    124 == Initial ==
    125 * the plate temperature (OutletLiquid.T)
    126 * the liquid height (Level) OR the liquid flow OutletLiquid.F
    127 * (NoComps - 1) OutletLiquid compositions
    12835
    12936== Options ==
     
    14148* WANG, L.; LI, P.; WOZNY, G.; WANG, S. A start-up model for simulation of batch distillation starting from a cold state. Computers and Chemical Engineering, v. 27, p.1485-1497, 2003.
    14249";     
    143 
     50       
     51PARAMETERS
     52outer PP                as Plugin               (Brief = "External Physical Properties", Type="PP");
     53outer NComp     as Integer              (Brief="Number of components");
     54
     55        Mw(NComp)                                                       as molweight            (Brief="Component Mol Weight",Hidden=true);
     56        Gconst                                                          as acceleration         (Brief="Gravity Acceleration",Default=9.81,Hidden=true);
     57        zero_flow                                                       as flow_mol             (Brief = "Stream Flow closed",Default = 0, Hidden=true);
     58        low_flow                                                        as flow_mol             (Brief = "Low stream Flow",Default = 1E-6, Hidden=true);
     59        Pi                                                                      as constant             (Brief="Pi Number",Default=3.14159265, Symbol = "\pi",Hidden=true);
     60       
     61        TrayDiameter_                   as length               (Brief="Tray Diameter",Default=1.600);
     62        TraySpacing_                    as length               (Brief="Tray Spacing",Default=0.600);
     63        Fraction_HoleArea_              as fraction     (Brief="Fraction of the active area that is occupied by the holes with respect to the total tray area",Default=0.10);
     64        Fraction_DowncomerArea_ as fraction     (Brief="Fraction of the downcomer area with respect to the total tray area",Default=0.20);
     65        WeirLength_                             as length               (Brief="Weir length", Default = 1);
     66        WeirHeight_                     as length               (Brief="Weir height", Default= 0.05);
     67        TrayLiquidPasses_               as positive     (Brief="Number of liquid passes in the tray", Lower = 1,Default=1);
     68        HeatSupply_                     as heat_rate    (Brief="Rate of heat supply",Default = 0);
     69        AerationFraction_               as Real                 (Brief="Aeration fraction", Default = 1);
     70        DryPdropCoeff_                  as Real                 (Brief="Dry pressure drop coefficient", Default= 0.60);
     71        MurphreeEff_                    as Real                 (Brief="Murphree efficiency for All Trays",Lower=0.01,Upper=1);
     72
     73        PlateArea_                              as area                 (Brief="Plate area = Atray - Adowncomer",Protected=true);
     74        TrayVolume_                             as volume               (Brief="Total Volume of the tray",Protected=true);
     75        HolesArea_                              as area                 (Brief="Total holes area",Protected=true);
     76       
     77        FeeheryCoeff    as Real         (Brief="Feeherys correlation coefficient", Unit='1/m^4', Default=1,Hidden=true);
     78        ElgueCoeff              as Real         (Brief="Elgues correlation coefficient", Unit='kg/m/mol^2', Default=1,Hidden=true);
     79        OlsenCoeff              as Real         (Brief="Olsens correlation coefficient", Default=1,Hidden=true);
     80       
     81        VapourFlow      as Switcher     (Brief="Flag for Vapour Flow condition",Valid = ["on", "off"], Default = "off",Hidden=true);
     82        LiquidFlow      as Switcher     (Brief="Flag for Liquid Flow condition",Valid = ["on", "off"], Default = "off",Hidden=true);
     83       
    14484VARIABLES
    145         rhoL as dens_mass;
    146         rhoV as dens_mass;
     85
     86        Inlet                           as stream                       (Brief="Feed stream", Hidden=true, PosX=0, PosY=0.4932, Symbol="_{in}");
     87        LiquidSideStream        as liquid_stream        (Brief="liquid Sidestream", Hidden=true, Symbol="_{outL}");
     88        VapourSideStream        as vapour_stream        (Brief="vapour Sidestream", Hidden=true, Symbol="_{outV}");
     89
     90in      InletLiquid     as stream                       (Brief="Inlet liquid stream", PosX=0.5195, PosY=0, Symbol="_{inL}");
     91in      InletVapour     as stream                       (Brief="Inlet vapour stream", PosX=0.4994, PosY=1, Symbol="_{inV}");
     92out     OutletLiquid    as liquid_stream        (Brief="Outlet liquid stream", PosX=0.8277, PosY=1, Symbol="_{outL}");
     93out     OutletVapour    as vapour_stream        (Brief="Outlet vapour stream", PosX=0.8043, PosY=0, Symbol="_{outV}");
     94
     95        LFlowModel      as positive     (Brief="Flag for Liquid Flow Model",Lower = 1, Default = 1 , Hidden=true);
     96        VFlowModel      as positive     (Brief="Flag for Vapour Flow Model",Lower = 1, Default = 1 , Hidden=true);
     97
     98        M(NComp)                        as mol                  (Brief="Molar Holdup in the tray");
     99        ML                                      as mol                  (Brief="Molar liquid holdup");
     100        MV                                      as mol                  (Brief="Molar vapour holdup");
     101        E                                       as energy               (Brief="Total Energy Holdup on tray");
     102        vL                                      as volume_mol   (Brief="Liquid Molar Volume");
     103        vV                                      as volume_mol   (Brief="Vapour Molar volume");
     104        Level                           as length               (Brief="Height of clear liquid on plate");
     105        yideal(NComp)           as fraction;
     106        rhoL                            as dens_mass    (Brief="Mass Density of liquid phase");
     107        rhoV                            as dens_mass    (Brief="Mass Density of vapour phase");
     108
     109SET
     110
     111        Mw = PP.MolecularWeight();
     112        zero_flow = 0 * 'kmol/h';
     113        low_flow = 1E-6 * 'kmol/h';
     114
     115        PlateArea_ = 0.25*Pi*(TrayDiameter_^2)*(1-Fraction_DowncomerArea_);
     116        TrayVolume_ = 0.25*Pi*(TrayDiameter_^2)*TraySpacing_;
     117        HolesArea_ = 0.25*Pi*(TrayDiameter_^2)*Fraction_HoleArea_;
    147118
    148119EQUATIONS
     120
     121# LiquidFlow and VapourFlow equations need to be linerized to avoid indetermination !
     122switch LiquidFlow
     123
     124        case "on":
     125                       
     126                        if LFlowModel equal 1 then
     127                                "Francis Equation"
     128                                OutletLiquid.F*vL = 1.84*'1/s'*WeirLength_*((Level-(AerationFraction_*WeirHeight_))/(AerationFraction_))^2;
     129                       
     130                        else if LFlowModel equal 2 then
     131                                "Wang_Fl"
     132                                OutletLiquid.F*vL = 1.84*'m^0.5/s'*WeirLength_*((Level-(AerationFraction_*WeirHeight_))/(AerationFraction_))^1.5;
     133                       
     134                        else if LFlowModel equal 3 then
     135                                "Olsen"
     136                                OutletLiquid.F / 'mol/s'= WeirLength_*TrayLiquidPasses_*rhoL/sum(Mw*OutletVapour.z)/(0.665*OlsenCoeff)^1.5 * ((ML*sum(Mw*OutletLiquid.z)/rhoL/PlateArea_)-WeirHeight_)^1.5 * 'm^0.5/mol';
     137                       
     138                        else if LFlowModel equal 4 then 
     139                                "Feehery_Fl"
     140                                OutletLiquid.F = WeirLength_*rhoL/sum(Mw*OutletLiquid.z) * ((Level-WeirHeight_)/750/'mm')^1.5 * 'm^2/s';
     141                       
     142                        else   
     143                                "Roffel_Fl"
     144                                OutletLiquid.F = 2/3*rhoL/sum(Mw*OutletLiquid.z)*WeirLength_*(ML*sum(Mw*OutletLiquid.z)/(PlateArea_*1.3)/rhoL)^1.5*sqrt(2*Gconst/
     145                                                        (2*(1 - 0.3593/'Pa^0.0888545'*abs(OutletVapour.F*sum(Mw*OutletVapour.z)/(PlateArea_*1.3)/sqrt(rhoV))^0.177709)-1)); #/'(kg/m)^0.0888545/s^0.177709';
     146end
     147end
     148end
     149end
     150               
     151                when Level < (AerationFraction_ *WeirHeight_) switchto "off";
     152               
     153                case "off":
     154               
     155                "Low level"
     156                OutletLiquid.F = zero_flow;
     157               
     158                when Level > (AerationFraction_ * WeirHeight_) switchto "on";
     159               
     160end
     161       
     162switch VapourFlow
     163       
     164        case "on":
     165                       
     166                        if VFlowModel equal 1 then
     167                                "Reepmeyer"
     168                                InletVapour.F*vV = sqrt((InletVapour.P - OutletVapour.P)/(rhoV*DryPdropCoeff_))*HolesArea_;
     169                       
     170                        else if VFlowModel equal 2 then
     171                                "Feehery_Fv"
     172                                InletVapour.F = rhoV/PlateArea_/FeeheryCoeff/sum(Mw*OutletVapour.z) * sqrt(((InletVapour.P - OutletVapour.P)-(rhoV*Gconst*ML*vL/PlateArea_))/rhoV);
     173                       
     174                        else if VFlowModel equal 3 then
     175                                "Roffel_Fv"
     176                                InletVapour.F^1.08 * 0.0013 * 'kg/m/mol^1.08/s^0.92*1e5' = (InletVapour.P - OutletVapour.P)*1e5 - (AerationFraction_*sum(M*Mw)/(PlateArea_*1.3)*Gconst*1e5) * (rhoV*HolesArea_/sum(Mw*OutletVapour.z))^1.08 * 'm^1.08/mol^1.08';
     177                       
     178                        else if VFlowModel equal 4  then
     179                                "Klingberg"
     180                                InletVapour.F * vV = PlateArea_ * sqrt(((InletVapour.P - OutletVapour.P)-rhoL*Gconst*Level)/rhoV);
     181                       
     182                        else if VFlowModel equal 5 then
     183                                "Wang_Fv"
     184                                InletVapour.F * vV = PlateArea_ * sqrt(((InletVapour.P - OutletVapour.P)-rhoL*Gconst*Level)/rhoV*DryPdropCoeff_);
     185                               
     186                        else
     187                                "Elgue"
     188                                InletVapour.F  = sqrt((InletVapour.P - OutletVapour.P)/ElgueCoeff);
     189end
     190end
     191end
     192end
     193end
     194       
     195        when InletVapour.F < low_flow switchto "off";
     196
     197        case "off":
     198                InletVapour.F = zero_flow;
     199               
     200        when InletVapour.P > OutletVapour.P switchto "on";
     201
     202end
     203
     204"Murphree Efficiency"
     205        OutletVapour.z =  MurphreeEff_ * (yideal - InletVapour.z) + InletVapour.z;
     206       
     207"Energy Balance"
     208        diff(E) = ( Inlet.F*Inlet.h + InletLiquid.F*InletLiquid.h + InletVapour.F*InletVapour.h- OutletLiquid.F*OutletLiquid.h - OutletVapour.F*OutletVapour.h
     209        - VapourSideStream.F*VapourSideStream.h - LiquidSideStream.F*LiquidSideStream.h + HeatSupply_ );
     210
     211"Energy Holdup"
     212        E = ML*OutletLiquid.h + MV*OutletVapour.h - OutletLiquid.P*TrayVolume_;
     213
     214"Geometry Constraint"
     215        TrayVolume_ = ML* vL + MV*vV;
     216
     217"Level of clear liquid over the weir"
     218        Level = ML*vL/PlateArea_;
     219
     220"Component Molar Balance"
     221        diff(M)=Inlet.F*Inlet.z + InletLiquid.F*InletLiquid.z + InletVapour.F*InletVapour.z- OutletLiquid.F*OutletLiquid.z - OutletVapour.F*OutletVapour.z-
     222        LiquidSideStream.F*LiquidSideStream.z-VapourSideStream.F*VapourSideStream.z;
     223
     224"Molar Holdup"
     225        M = ML*OutletLiquid.z + MV*OutletVapour.z;
     226
     227"Mol fraction normalisation"
     228        sum(OutletLiquid.z)= 1.0;
     229
     230"Mol fraction constraint"
     231        sum(OutletLiquid.z)= sum(OutletVapour.z);
     232
     233"Liquid Volume"
     234        vL = PP.LiquidVolume(OutletLiquid.T, OutletLiquid.P, OutletLiquid.z);
     235
     236"Vapour Volume"
     237        vV = PP.VapourVolume(OutletVapour.T, OutletVapour.P, OutletVapour.z);
    149238
    150239"Liquid Density"
     
    153242"Vapour Density"
    154243        rhoV = PP.VapourDensity(InletVapour.T, InletVapour.P, InletVapour.z);
     244
     245"Chemical Equilibrium"
     246        PP.LiquidFugacityCoefficient(OutletLiquid.T, OutletLiquid.P, OutletLiquid.z)*OutletLiquid.z = PP.VapourFugacityCoefficient(OutletVapour.T, OutletVapour.P, yideal)*yideal;
     247
     248"Thermal Equilibrium"
     249        OutletVapour.T = OutletLiquid.T;
     250
     251"Mechanical Equilibrium"
     252        OutletVapour.P = OutletLiquid.P;
     253       
     254"Thermal Equilibrium Vapour Side Stream"
     255        OutletVapour.T = VapourSideStream.T;
     256
     257"Thermal Equilibrium Liquid Side Stream"
     258        OutletLiquid.T = LiquidSideStream.T;
     259
     260"Mechanical Equilibrium Vapour Side Stream"
     261        OutletVapour.P= VapourSideStream.P;
     262
     263"Mechanical Equilibrium Liquid Side Stream"
     264        OutletLiquid.P = LiquidSideStream.P;
     265
     266"Composition Liquid Side Stream"
     267        OutletLiquid.z= LiquidSideStream.z;
     268       
     269"Composition Vapour Side Stream"
     270        OutletVapour.z= VapourSideStream.z;
    155271
    156272end
Note: See TracChangeset for help on using the changeset viewer.