Changeset 838 for branches/gui/eml/stage_separators/column.mso
- Timestamp:
- Aug 25, 2009, 9:15:37 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/gui/eml/stage_separators/column.mso
r836 r838 724 724 LiquidFlowModel as Switcher (Valid = ["default", "Wang_Fl", "Olsen", "Feehery_Fl", "Roffel_Fl"], Default = "default"); 725 725 726 VolumeOfTray as volume (Brief="Total Volume of the tray"); 727 HeatSupply as heat_rate (Brief="Rate of heat supply"); 728 PlateArea as area (Brief="Plate area = Atray - Adowncomer"); 729 HolesArea as area (Brief="Total holes area"); 730 WeirLength as length (Brief="Weir length"); 731 WeirHeight as length (Brief="Weir height"); 732 TrayLiquidPasses as Real (Brief="Number of liquid passes in the tray", Default=1); 726 TrayDiameter as length (Brief="Tray Diameter",Default=1.600); 727 TraySpacing as length (Brief="Tray Spacing",Default=0.600); 728 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); 729 Fraction_DowncomerArea as fraction (Brief="Fraction of the downcomer area with respect to the total tray area",Default=0.20); 730 WeirLength as length (Brief="Weir length", Default = 1); 731 WeirHeight as length (Brief="Weir height", Default= 0.05); 732 TrayLiquidPasses as positive (Brief="Number of liquid passes in the tray", Lower = 1,Default=1); 733 HeatSupply as heat_rate (Brief="Rate of heat supply",Default = 0); 734 AerationFraction as Real (Brief="Aeration fraction", Default = 1); 735 DryPdropCoeff as Real (Brief="Dry pressure drop coefficient", Default= 0.60); 736 737 PlateArea as area (Brief="Plate area = Atray - Adowncomer",Protected=true); 738 TrayVolume as volume (Brief="Total Volume of the tray",Protected=true); 739 HolesArea as area (Brief="Total holes area",Protected=true); 733 740 734 741 FeeheryCoeff as Real (Brief="Feeherys correlation coefficient", Unit='1/m^4', Default=1,Hidden=true); … … 736 743 OlsenCoeff as Real (Brief="Olsens correlation coefficient", Default=1,Hidden=true); 737 744 738 V as volume (Brief="Total Volume of the tray",Hidden=true); 739 Q as heat_rate (Brief="Rate of heat supply",Hidden=true); 740 Ap as area (Brief="Plate area = Atray - Adowncomer",Hidden=true); 741 Ah as area (Brief="Total holes area",Hidden=true); 742 lw as length (Brief="Weir length",Hidden=true); 743 hw as length (Brief="Weir height",Hidden=true); 744 AerationFraction as fraction (Brief="Aeration fraction"); 745 alfa as fraction (Brief="Dry pressure drop coefficient"); 746 w as Real (Brief="Feeherys correlation coefficient", Unit='1/m^4', Default=1,Hidden=true); 747 btray as Real (Brief="Elgues correlation coefficient", Unit='kg/m/mol^2', Default=1,Hidden=true); 748 fw as Real (Brief="Olsens correlation coefficient", Default=1,Hidden=true); 749 Np as Real (Brief="Number of liquid passes in the tray", Default=1,Hidden=true); 750 745 Pi as constant (Brief="Pi Number",Default=3.14159265, Symbol = "\pi",Hidden=true); 746 zero_flow as flow_mol (Brief = "Stream Flow closed",Default = 0, Hidden=true); 747 low_flow as flow_mol (Brief = "Low stream Flow",Default = 1E-6, Hidden=true); 751 748 VapourFlow as Switcher (Valid = ["on", "off"], Default = "on",Hidden=true); 752 749 LiquidFlow as Switcher (Valid = ["on", "off"], Default = "on",Hidden=true); … … 756 753 LiqSideTrayIndex(LiquidSideStreamLocation) =1; 757 754 Mw = PP.MolecularWeight(); 758 759 V=VolumeOfTray; 760 Q=HeatSupply; 761 Ap=PlateArea; 762 Ah=HolesArea; 763 lw=WeirLength; 764 hw=WeirHeight ; 765 w=FeeheryCoeff; 766 btray=ElgueCoeff; 767 fw=OlsenCoeff; 768 Np=TrayLiquidPasses; 755 zero_flow = 0 * 'kmol/h'; 756 low_flow = 1E-6 * 'kmol/h'; 757 758 PlateArea = 0.25*Pi*(TrayDiameter^2)*(1-Fraction_DowncomerArea); 759 TrayVolume = 0.25*Pi*(TrayDiameter^2)*TraySpacing; 760 HolesArea = 0.25*Pi*(TrayDiameter^2)*Fraction_HoleArea; 769 761 770 762 VARIABLES … … 798 790 799 791 "The initial Level of the TRAYS" 800 TRAYS(i).Level = INITIALIZATION.LevelFraction* hw;792 TRAYS(i).Level = INITIALIZATION.LevelFraction*WeirHeight; 801 793 end 802 794 … … 840 832 841 833 "Level of clear liquid over the weir" 842 TRAYS(i).Level = TRAYS(i).ML*TRAYS(i).vL/ Ap;834 TRAYS(i).Level = TRAYS(i).ML*TRAYS(i).vL/PlateArea; 843 835 844 836 "Geometry Constraint" 845 V= TRAYS(i).ML* TRAYS(i).vL + TRAYS(i).MV*TRAYS(i).vV;837 TrayVolume = TRAYS(i).ML* TRAYS(i).vL + TRAYS(i).MV*TRAYS(i).vV; 846 838 847 839 "Energy Holdup" 848 TRAYS(i).E = TRAYS(i).ML*TRAYS(i).OutletLiquid.h + TRAYS(i).MV*TRAYS(i).OutletVapour.h - TRAYS(i).OutletLiquid.P* V;840 TRAYS(i).E = TRAYS(i).ML*TRAYS(i).OutletLiquid.h + TRAYS(i).MV*TRAYS(i).OutletVapour.h - TRAYS(i).OutletLiquid.P*TrayVolume; 849 841 850 842 "Energy Balance" 851 843 diff(TRAYS(i).E) = ( TRAYS(i).Inlet.F*TRAYS(i).Inlet.h + TRAYS(i).InletLiquid.F*TRAYS(i).InletLiquid.h + TRAYS(i).InletVapour.F*TRAYS(i).InletVapour.h- TRAYS(i).OutletLiquid.F*TRAYS(i).OutletLiquid.h - TRAYS(i).OutletVapour.F*TRAYS(i).OutletVapour.h 852 -TRAYS(i).VapourSideStream.F*TRAYS(i).VapourSideStream.h - TRAYS(i).LiquidSideStream.F*TRAYS(i).LiquidSideStream.h + Q);844 -TRAYS(i).VapourSideStream.F*TRAYS(i).VapourSideStream.h - TRAYS(i).LiquidSideStream.F*TRAYS(i).LiquidSideStream.h + HeatSupply ); 853 845 854 846 switch LiquidFlow … … 857 849 case "default": 858 850 "Francis Equation" 859 TRAYS(i).OutletLiquid.F*TRAYS(i).vL = 1.84*'1/s'* lw*((TRAYS(i).Level-(AerationFraction*hw))/(AerationFraction))^2;851 TRAYS(i).OutletLiquid.F*TRAYS(i).vL = 1.84*'1/s'*WeirLength*((TRAYS(i).Level-(AerationFraction*WeirHeight))/(AerationFraction))^2; 860 852 861 853 case "Wang_Fl": 862 TRAYS(i).OutletLiquid.F*TRAYS(i).vL = 1.84*'m^0.5/s'* lw*((TRAYS(i).Level-(AerationFraction*hw))/(AerationFraction))^1.5;854 TRAYS(i).OutletLiquid.F*TRAYS(i).vL = 1.84*'m^0.5/s'*WeirLength*((TRAYS(i).Level-(AerationFraction*WeirHeight))/(AerationFraction))^1.5; 863 855 864 856 case "Olsen": 865 TRAYS(i).OutletLiquid.F / 'mol/s'= lw*Np*TRAYS(i).rhoL/sum(Mw*TRAYS(i).OutletVapour.z)/(0.665*fw)^1.5 * ((TRAYS(i).ML*sum(Mw*TRAYS(i).OutletLiquid.z)/TRAYS(i).rhoL/Ap)-hw)^1.5 * 'm^0.5/mol';857 TRAYS(i).OutletLiquid.F / 'mol/s'= WeirLength*TrayLiquidPasses*TRAYS(i).rhoL/sum(Mw*TRAYS(i).OutletVapour.z)/(0.665*OlsenCoeff)^1.5 * ((TRAYS(i).ML*sum(Mw*TRAYS(i).OutletLiquid.z)/TRAYS(i).rhoL/PlateArea)-WeirHeight)^1.5 * 'm^0.5/mol'; 866 858 867 859 case "Feehery_Fl": 868 TRAYS(i).OutletLiquid.F = lw*TRAYS(i).rhoL/sum(Mw*TRAYS(i).OutletLiquid.z) * ((TRAYS(i).Level-hw)/750/'mm')^1.5 * 'm^2/s';860 TRAYS(i).OutletLiquid.F = WeirLength*TRAYS(i).rhoL/sum(Mw*TRAYS(i).OutletLiquid.z) * ((TRAYS(i).Level-WeirHeight)/750/'mm')^1.5 * 'm^2/s'; 869 861 870 862 case "Roffel_Fl": 871 TRAYS(i).OutletLiquid.F = 2/3*TRAYS(i).rhoL/sum(Mw*TRAYS(i).OutletLiquid.z)* lw*(TRAYS(i).ML*sum(Mw*TRAYS(i).OutletLiquid.z)/(Ap*1.3)/TRAYS(i).rhoL)^1.5*sqrt(2*g/872 (2*(1 - 0.3593/'Pa^0.0888545'*abs(TRAYS(i).OutletVapour.F*sum(Mw*TRAYS(i).OutletVapour.z)/( Ap*1.3)/sqrt(TRAYS(i).rhoV))^0.177709)-1)); #/'(kg/m)^0.0888545/s^0.177709';863 TRAYS(i).OutletLiquid.F = 2/3*TRAYS(i).rhoL/sum(Mw*TRAYS(i).OutletLiquid.z)*WeirLength*(TRAYS(i).ML*sum(Mw*TRAYS(i).OutletLiquid.z)/(PlateArea*1.3)/TRAYS(i).rhoL)^1.5*sqrt(2*g/ 864 (2*(1 - 0.3593/'Pa^0.0888545'*abs(TRAYS(i).OutletVapour.F*sum(Mw*TRAYS(i).OutletVapour.z)/(PlateArea*1.3)/sqrt(TRAYS(i).rhoV))^0.177709)-1)); #/'(kg/m)^0.0888545/s^0.177709'; 873 865 end 874 when TRAYS(i).Level < (AerationFraction * hw) switchto "off";866 when TRAYS(i).Level < (AerationFraction *WeirHeight) switchto "off"; 875 867 876 868 case "off": 877 869 "Low level" 878 870 TRAYS(i).OutletLiquid.F = 0 * 'mol/h'; 879 when TRAYS(i).Level > (AerationFraction * hw) switchto "on";871 when TRAYS(i).Level > (AerationFraction * WeirHeight) switchto "on"; 880 872 end 881 873 … … 884 876 switch VapourFlowModel 885 877 case "Reepmeyer": 886 TRAYS(i).InletVapour.F*TRAYS(i).vV = sqrt((TRAYS(i).InletVapour.P - TRAYS(i).OutletVapour.P)/(TRAYS(i).rhoV* alfa))*Ah;878 TRAYS(i).InletVapour.F*TRAYS(i).vV = sqrt((TRAYS(i).InletVapour.P - TRAYS(i).OutletVapour.P)/(TRAYS(i).rhoV*DryPdropCoeff))*HolesArea; 887 879 888 880 case "Feehery_Fv": 889 TRAYS(i).InletVapour.F = TRAYS(i).rhoV/ Ap/w/sum(Mw*TRAYS(i).OutletVapour.z) * sqrt(((TRAYS(i).InletVapour.P - TRAYS(i).OutletVapour.P)-(TRAYS(i).rhoV*g*TRAYS(i).ML*TRAYS(i).vL/Ap))/TRAYS(i).rhoV);881 TRAYS(i).InletVapour.F = TRAYS(i).rhoV/PlateArea/FeeheryCoeff/sum(Mw*TRAYS(i).OutletVapour.z) * sqrt(((TRAYS(i).InletVapour.P - TRAYS(i).OutletVapour.P)-(TRAYS(i).rhoV*g*TRAYS(i).ML*TRAYS(i).vL/PlateArea))/TRAYS(i).rhoV); 890 882 891 883 case "Roffel_Fv": 892 TRAYS(i).InletVapour.F^1.08 * 0.0013 * 'kg/m/mol^1.08/s^0.92*1e5' = (TRAYS(i).InletVapour.P - TRAYS(i).OutletVapour.P)*1e5 - (AerationFraction*sum(TRAYS(i).M*Mw)/( Ap*1.3)*g*1e5) * (TRAYS(i).rhoV*Ah/sum(Mw*TRAYS(i).OutletVapour.z))^1.08 * 'm^1.08/mol^1.08';884 TRAYS(i).InletVapour.F^1.08 * 0.0013 * 'kg/m/mol^1.08/s^0.92*1e5' = (TRAYS(i).InletVapour.P - TRAYS(i).OutletVapour.P)*1e5 - (AerationFraction*sum(TRAYS(i).M*Mw)/(PlateArea*1.3)*g*1e5) * (TRAYS(i).rhoV*HolesArea/sum(Mw*TRAYS(i).OutletVapour.z))^1.08 * 'm^1.08/mol^1.08'; 893 885 894 886 case "Klingberg": 895 TRAYS(i).InletVapour.F * TRAYS(i).vV = Ap* sqrt(((TRAYS(i).InletVapour.P - TRAYS(i).OutletVapour.P)-TRAYS(i).rhoL*g*TRAYS(i).Level)/TRAYS(i).rhoV);887 TRAYS(i).InletVapour.F * TRAYS(i).vV = PlateArea * sqrt(((TRAYS(i).InletVapour.P - TRAYS(i).OutletVapour.P)-TRAYS(i).rhoL*g*TRAYS(i).Level)/TRAYS(i).rhoV); 896 888 897 889 case "Wang_Fv": 898 TRAYS(i).InletVapour.F * TRAYS(i).vV = Ap * sqrt(((TRAYS(i).InletVapour.P - TRAYS(i).OutletVapour.P)-TRAYS(i).rhoL*g*TRAYS(i).Level)/TRAYS(i).rhoV*alfa);890 TRAYS(i).InletVapour.F * TRAYS(i).vV = PlateArea * sqrt(((TRAYS(i).InletVapour.P - TRAYS(i).OutletVapour.P)-TRAYS(i).rhoL*g*TRAYS(i).Level)/TRAYS(i).rhoV*DryPdropCoeff); 899 891 900 892 case "Elgue": 901 TRAYS(i).InletVapour.F = sqrt((TRAYS(i).InletVapour.P - TRAYS(i).OutletVapour.P)/ btray);893 TRAYS(i).InletVapour.F = sqrt((TRAYS(i).InletVapour.P - TRAYS(i).OutletVapour.P)/ElgueCoeff); 902 894 end 903 895 when TRAYS(i).InletVapour.F < 1e-6 * 'kmol/h' switchto "off"; … … 947 939 VARIABLES 948 940 941 CONDENSER as condenser; 942 REBOILER as reboiler; 943 SPLITTER as splitter_column (Brief="splitter which separate reflux and distillate",Protected=true); 944 PUMP as pump; 945 RefluxRatio as positive (Brief="Reflux Ratio",Default=10, Lower = 0.5); 946 949 947 out TI_reb as control_signal (Brief="Temperature Indicator of Reboiler ",Protected = true, PosX=0.515, PosY=1); 950 948 out LI_reb as control_signal (Brief="Level Indicator of Reboiler", Protected = true, PosX=1, PosY=0.935); … … 957 955 in FeedTray as stream (Brief="Feed stream", PosX=0, PosY=0.55); 958 956 959 CONDENSER as condenser; 960 REBOILER as reboiler; 961 SPLITTER as splitter2; 962 PUMP as pump; 957 963 958 964 959 in HeatToReboiler as power (Brief="Heat supplied to Reboiler",Protected = true, PosX=1, PosY=0.855); … … 978 973 979 974 EQUATIONS 975 976 SPLITTER.RefluxRatio = RefluxRatio; 980 977 981 978 TI_reb = REBOILER.TI ; … … 1061 1058 #liquid 1062 1059 CONDENSER.OutletLiquid to SPLITTER.Inlet; 1063 SPLITTER. Outlet2to PUMP.Inlet;1060 SPLITTER.Reflux to PUMP.Inlet; 1064 1061 PUMP.Outlet to TRAYS(1).InletLiquid; 1065 1062 TRAYS(NumberOfTrays).OutletLiquid to REBOILER.InletLiquid; … … 1067 1064 #Connectors 1068 1065 CONDENSER.OutletVapour to ConnectorCondenserVout; 1069 SPLITTER. Outlet1to ConnectorSplitterOut;1066 SPLITTER.Distillate to ConnectorSplitterOut; 1070 1067 REBOILER.OutletLiquid to ConnectorReboilerLout; 1071 1068 … … 1112 1109 CONDENSER as condenserSteady (Brief="steady state condenser with subcooling"); 1113 1110 REFLUX_DRUM as TankL (Brief="Reflux Drum"); 1114 SPLITTER_TOP as splitter 2 (Brief="splitter which separate reflux and distillate");1111 SPLITTER_TOP as splitter_column (Brief="splitter which separate reflux and distillate",Protected=true); 1115 1112 PUMP as pump (Brief="pump in reflux stream"); 1116 1113 REBOILER as reboilerSteady (Brief="steady state reboiler (thermosyphon)"); … … 1120 1117 in FeedTray as stream (Brief="Feed stream", PosX=0, PosY=0.55); 1121 1118 1119 RefluxRatio as positive (Brief="Reflux Ratio",Default=10, Lower = 0.5); 1120 1122 1121 in Q_cond as power (Brief="Heat supplied to Condenser",PosX=1, PosY=0, Protected=true); 1123 1122 in Q_reb as power (Brief="Heat supplied to Reboiler", PosX=1, PosY=0.96,Protected=true); … … 1149 1148 EQUATIONS 1150 1149 1150 SPLITTER_TOP.RefluxRatio = RefluxRatio; 1151 1151 TI_reb = REBOILER.TI ; 1152 1152 PI_reb = REBOILER.PI; … … 1234 1234 CONDENSER.OutletLiquid to REFLUX_DRUM.Inlet; 1235 1235 REFLUX_DRUM.OutletLiquid to SPLITTER_TOP.Inlet; 1236 SPLITTER_TOP. Outlet2to PUMP.Inlet;1236 SPLITTER_TOP.Reflux to PUMP.Inlet; 1237 1237 PUMP.Outlet to TRAYS(1).InletLiquid; 1238 1238 TRAYS(NumberOfTrays).OutletLiquid to SUMP.InletLiquid; … … 1244 1244 ConnectorHeatReboiler to REBOILER.InletQ; 1245 1245 ConnectorHeatRefluxDrum to REFLUX_DRUM.InletQ; 1246 SPLITTER_TOP. Outlet1to ConnectorSplitterTop;1246 SPLITTER_TOP.Distillate to ConnectorSplitterTop; 1247 1247 SPLITTER_BOTTOM.Outlet1 to ConnectorSplitterBottom; 1248 1248 … … 1284 1284 VARIABLES 1285 1285 CONDENSER as condenser (Brief="dynamic condenser without subcooling"); 1286 SPLITTER_TOP as splitter 2 (Brief="splitter which separate reflux and distillate");1286 SPLITTER_TOP as splitter_column (Brief="splitter which separate reflux and distillate",Protected=true); 1287 1287 PUMP as pump (Brief="pump in reflux stream"); 1288 1288 SUMP as SumpTank (Brief="vessel in the bottom of column"); 1289 1289 SPLITTER_BOTTOM as splitter2 (Brief="splitter who separate the bottom product and the stream to reboiler"); 1290 1290 REBOILER as reboilerSteady (Brief="steady state reboiler (thermosyphon)"); 1291 1291 RefluxRatio as positive (Brief="Reflux Ratio",Default=10, Lower = 0.5); 1292 1292 1293 in FeedTray as stream (Brief="Feed stream", PosX=0, PosY=0.55); 1293 1294 … … 1363 1364 1364 1365 end 1366 1367 SPLITTER_TOP.RefluxRatio = RefluxRatio; 1365 1368 1366 1369 TI_reb = REBOILER.TI ; … … 1404 1407 #liquid 1405 1408 CONDENSER.OutletLiquid to SPLITTER_TOP.Inlet; 1406 SPLITTER_TOP. Outlet2to PUMP.Inlet;1409 SPLITTER_TOP.Reflux to PUMP.Inlet; 1407 1410 PUMP.Outlet to TRAYS(1).InletLiquid; 1408 1411 TRAYS(NumberOfTrays).OutletLiquid to SUMP.InletLiquid; … … 1414 1417 ConnectorHeatReboiler to REBOILER.InletQ; 1415 1418 CONDENSER.OutletVapour to ConnectorCondenserVout; 1416 SPLITTER_TOP. Outlet1to ConnectorSplitterTop;1419 SPLITTER_TOP.Distillate to ConnectorSplitterTop; 1417 1420 SPLITTER_BOTTOM.Outlet1 to ConnectorSplitterBottom; 1418 1421 … … 1457 1460 CONDENSER as condenserSteady (Brief="steady state condenser with subcooling"); 1458 1461 REFLUX_DRUM as TankL (Brief="reflux drum"); 1459 SPLITTER as splitter 2 (Brief="splitter to separate reflux and distillate");1462 SPLITTER as splitter_column (Brief="splitter to separate reflux and distillate",Protected=true); 1460 1463 PUMP as pump (Brief="pump in reflux stream"); 1461 1464 REBOILER as reboiler (Brief="kettle reboiler"); 1465 1466 RefluxRatio as positive (Brief="Reflux Ratio",Default=10, Lower = 0.5); 1462 1467 1463 1468 in Q_cond as power (Brief="Heat supplied to Condenser", PosX=1, PosY=0.065, Protected=true); … … 1490 1495 EQUATIONS 1491 1496 1497 SPLITTER.RefluxRatio = RefluxRatio; 1498 1492 1499 TI_reb = REBOILER.TI ; 1493 1500 PI_reb = REBOILER.PI; … … 1572 1579 CONDENSER.OutletLiquid to REFLUX_DRUM.Inlet; 1573 1580 REFLUX_DRUM.OutletLiquid to SPLITTER.Inlet; 1574 SPLITTER. Outlet2to PUMP.Inlet;1581 SPLITTER.Reflux to PUMP.Inlet; 1575 1582 PUMP.Outlet to TRAYS(1).InletLiquid; 1576 1583 TRAYS(NumberOfTrays).OutletLiquid to REBOILER.InletLiquid; … … 1581 1588 ConnectorHeatAccumulator to REFLUX_DRUM.InletQ; 1582 1589 1583 SPLITTER. Outlet1to ConnectorSplitterOut;1590 SPLITTER.Distillate to ConnectorSplitterOut; 1584 1591 REBOILER.OutletLiquid to ConnectorReboilerLout; 1585 1592
Note: See TracChangeset
for help on using the changeset viewer.