Ignore:
Timestamp:
Nov 21, 2008, 7:57:17 PM (14 years ago)
Author:
gerson bicca
Message:

starting some modifications on column models (BRANCH)

File:
1 edited

Legend:

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

    r678 r692  
    11181118
    11191119
    1120 #*----------------------------------------------------------------------
    1121 * Model of a  Refluxed Stripping column containing:
    1122 *       - NumberOfTrays like tray;
    1123 *       - dymamic condenser without subcooling;
    1124 *       - a splitter which separate reflux and distillate;
    1125 *       - a pump in reflux stream;
    1126 *---------------------------------------------------------------------*
    1127 Model Refluxed_StrippingTeste
    1128         ATTRIBUTES
    1129         Pallete         = true;
    1130         Icon            = "icon/RefluxedCond";
    1131         Brief           = "Model of a refluxed stripping column with dynamic condenser.";
    1132         Info            =
    1133 "== Specify ==
    1134 * the feed stream of each tray (Inlet);
    1135 * the Murphree eficiency for each tray Emv;
    1136 * the InletV stream of the bottom tray unless its flow;
    1137 * the pump pressure difference;
    1138 * the heat supllied in the condenser;
    1139 * the condenser vapor outlet flow (OutletV.F);
    1140 * both splitter outlet flows OR one of the splitter outlet flows and the splitter frac.
    1141        
    1142 == Initial Conditions ==
    1143 * the trays temperature (OutletL.T);
    1144 * the trays liquid level (Level) OR the trays liquid flow (OutletL.F);
    1145 * (NoComps - 1) OutletL (OR OutletV) compositions for each tray;
    1146        
    1147 * the condenser temperature (OutletL.T);
    1148 * the condenser liquid level (Level);
    1149 * (NoComps - 1) OutletL (OR OutletV) compositions;
    1150 ";
    1151        
    1152         PARAMETERS
    1153         outer PP as Plugin(Brief = "External Physical Properties", Type="PP");
    1154         outer NComp as Integer;
    1155         NumberOfTrays as Integer(Brief="Number of trays", Default=2);
    1156         topdown as Integer(Brief="Trays counting (1=top-down, -1=bottom-up)", Default=1);
    1157         top as Integer(Brief="Number of top tray");
    1158         bot as Integer(Brief="Number of bottom tray");
    1159         VapourFlow as Switcher(Valid = ["on", "off"], Default = "on");
    1160 
    1161         SET
    1162         top = (NumberOfTrays-1)*(1-topdown)/2+1;
    1163         bot = NumberOfTrays/top;
    1164        
    1165         VARIABLES
    1166         trays(NumberOfTrays) as trayTeste;
    1167         cond as condenser;
    1168         sptop as splitter;
    1169         pump1 as pump;
    1170         alfaTopo as Real;
    1171 
    1172         EQUATIONS
    1173         switch VapourFlow
    1174                 case "on":
    1175                 cond.InletV.F*trays(top).vV = alfaTopo * trays(top).Ah * sqrt(2*(trays(top).OutletV.P -
    1176                 cond.OutletL.P + 1e-8 * 'atm') / (trays(top).alfa*trays(top).rhoV));
    1177                 when cond.InletV.F < 1e-6 * 'kmol/h' switchto "off";
    1178                
    1179                 case "off":
    1180                 cond.InletV.F = 0 * 'mol/s';
    1181                 when trays(top).OutletV.P > cond.OutletL.P + 1e-1 * 'atm' switchto "on";
    1182         end
    1183        
    1184         CONNECTIONS
    1185         #vapor
    1186         trays([top+topdown:topdown:bot]).OutletV to trays([top:topdown:bot-topdown]).InletV;
    1187         trays(top).OutletV to cond.InletV;
    1188        
    1189         #liquid
    1190         cond.OutletL to sptop.Inlet;   
    1191         sptop.Outlet2 to pump1.Inlet;   
    1192         pump1.Outlet to trays(top).InletL;
    1193         trays([top:topdown:bot-topdown]).OutletL to trays([top+topdown:topdown:bot]).InletL;
    1194 end
    1195 
    1196 
    1197 #* -------------------------------------------------------------------
    1198 * Refluxed Stripping Column with:
    1199 *
    1200 *       - NumberOfTrays like tray;
    1201 *       - a steady state condenser (with subcooling);
    1202 *       - a vessel drum (layed cilinder);
    1203 *       - a splitter which separate reflux and distillate;
    1204 *       - a pump in reflux stream.
    1205 *
    1206 * ------------------------------------------------------------------*
    1207 Model Refluxed_Stripping_subcoolingTeste
    1208         ATTRIBUTES
    1209         Pallete         = true;
    1210         Icon            = "icon/RefluxedSubcooling";
    1211         Brief           = "Model of a refluxed stripping column with steady condenser.";
    1212         Info            =
    1213 "== Specify ==
    1214 * the feed stream of each tray (Inlet);
    1215 * the Murphree eficiency for each tray Emv;
    1216 * the InletV stream of the bottom tray unless its flow;
    1217 * the pump head;
    1218 * the condenser pressure drop;
    1219 * the heat supllied in  the top tank;
    1220 * the heat supllied in condenser;
    1221 * both  top splitter outlet flows OR one of the splitter outlet flows and the splitter frac.
    1222        
    1223 == Initial Conditions ==
    1224 * the trays temperature (OutletL.T);
    1225 * the trays liquid level (Level) OR the trays liquid flow (OutletL.F);
    1226 * (NoComps - 1) OutletL (OR OutletV) compositions for each tray;
    1227        
    1228 * the top tank temperature (OutletL.T);
    1229 * the top tank liquid level (Level);
    1230 * (NoComps - 1) OutletL (OR OutletV) compositions;
    1231 ";
    1232        
    1233         PARAMETERS
    1234         outer PP as Plugin(Brief = "External Physical Properties", Type="PP");
    1235         outer NComp as Integer;
    1236         NumberOfTrays as Integer(Brief="Number of trays", Default=2);
    1237         topdown as Integer(Brief="Trays counting (1=top-down, -1=bottom-up)", Default=1);
    1238         top as Integer(Brief="Number of top tray");
    1239         bot as Integer(Brief="Number of bottom tray");
    1240         VapourFlow as Switcher(Valid = ["on", "off"], Default = "on");
    1241 
    1242         SET
    1243         top = (NumberOfTrays-1)*(1-topdown)/2+1;
    1244         bot = NumberOfTrays/top;
    1245        
    1246         VARIABLES
    1247         trays(NumberOfTrays) as trayTeste;
    1248         cond as condenserSteady;
    1249         ttop as tank_cylindrical;
    1250         sptop as splitter;
    1251         pump1 as pump;
    1252         alfaTopo as Real;
    1253 
    1254         EQUATIONS
    1255         switch VapourFlow
    1256                 case "on":
    1257                 cond.InletV.F*trays(top).vV = alfaTopo * trays(top).Ah * sqrt(2*(trays(top).OutletV.P -
    1258                 cond.OutletL.P + 1e-8 * 'atm') / (trays(top).alfa*trays(top).rhoV));
    1259                 when cond.InletV.F < 1e-6 * 'kmol/h' switchto "off";
    1260                
    1261                 case "off":
    1262                 cond.InletV.F = 0 * 'mol/s';
    1263                 when trays(top).OutletV.P > cond.OutletL.P + 1e-1 * 'atm' switchto "on";
    1264         end
    1265        
    1266         CONNECTIONS
    1267         #vapor
    1268         trays([top+topdown:topdown:bot]).OutletV to trays([top:topdown:bot-topdown]).InletV;
    1269         trays(top).OutletV to cond.InletV;
    1270        
    1271         #liquid
    1272         cond.OutletL to ttop.Inlet;     
    1273         ttop.Outlet to sptop.Inlet;
    1274         sptop.Outlet2 to pump1.Inlet;   
    1275         pump1.Outlet to trays(top).InletL;
    1276         trays([top:topdown:bot-topdown]).OutletL to trays([top+topdown:topdown:bot]).InletL;
    1277 end
    1278 
    1279 
    1280 #*----------------------------------------------------------------------
    1281 * Model of a  Refluxed Absorption column containing:
    1282 *       - NumberOfTrays like tray;
    1283 *       - dymamic condenser without subcooling;
    1284 *       - a splitter which separate reflux and distillate;
    1285 *       - a pump in reflux stream;
    1286 *---------------------------------------------------------------------*
    1287 Model Refluxed_AbsorptionTeste
    1288         ATTRIBUTES
    1289         Pallete         = true;
    1290         Icon            = "icon/RefluxedCond";
    1291         Brief           = "Model of a refluxed absorption column with dynamic condenser.";
    1292         Info            =
    1293 "== Specify ==
    1294 * the feed stream of each tray (Inlet);
    1295 * the Murphree eficiency for each tray Emv;
    1296 * the InletV stream of the bottom tray unless its flow;
    1297 * the pump pressure difference;
    1298 * the heat supllied in the condenser;
    1299 * the condenser vapor outlet flow (OutletV.F);
    1300 * both splitter outlet flows OR one of the splitter outlet flows and the splitter frac.
    1301        
    1302 == Initial Conditions ==
    1303 * the trays temperature (OutletL.T);
    1304 * the trays liquid level (Level) OR the trays liquid flow (OutletL.F);
    1305 * (NoComps - 1) OutletL (OR OutletV) compositions for each tray;
    1306        
    1307 * the condenser temperature (OutletL.T);
    1308 * the condenser liquid level (Level);
    1309 * (NoComps - 1) OutletL (OR OutletV) compositions;
    1310 ";
    1311        
    1312         PARAMETERS
    1313         outer PP as Plugin(Brief = "External Physical Properties", Type="PP");
    1314         outer NComp as Integer;
    1315         NumberOfTrays as Integer(Brief="Number of trays", Default=2);
    1316         topdown as Integer(Brief="Trays counting (1=top-down, -1=bottom-up)", Default=1);
    1317         top as Integer(Brief="Number of top tray");
    1318         bot as Integer(Brief="Number of bottom tray");
    1319         VapourFlow as Switcher(Valid = ["on", "off"], Default = "on");
    1320 
    1321         SET
    1322         top = (NumberOfTrays-1)*(1-topdown)/2+1;
    1323         bot = NumberOfTrays/top;
    1324        
    1325         VARIABLES
    1326         trays(NumberOfTrays) as trayTeste;
    1327         cond as condenser;
    1328         sptop as splitter;
    1329         pump1 as pump;
    1330         alfaTopo as Real;
    1331 
    1332         EQUATIONS
    1333         switch VapourFlow
    1334                 case "on":
    1335                 cond.InletV.F*trays(top).vV = alfaTopo * trays(top).Ah * sqrt(2*(trays(top).OutletV.P -
    1336                 cond.OutletL.P + 1e-8 * 'atm') / (trays(top).alfa*trays(top).rhoV));
    1337                 when cond.InletV.F < 1e-6 * 'kmol/h' switchto "off";
    1338                
    1339                 case "off":
    1340                 cond.InletV.F = 0 * 'mol/s';
    1341                 when trays(top).OutletV.P > cond.OutletL.P + 1e-1 * 'atm' switchto "on";
    1342         end
    1343        
    1344         CONNECTIONS
    1345         #vapor
    1346         trays([top+topdown:topdown:bot]).OutletV to trays([top:topdown:bot-topdown]).InletV;
    1347         trays(top).OutletV to cond.InletV;
    1348        
    1349         #liquid
    1350         cond.OutletL to cond.InletV;   
    1351         cond.OutletL to sptop.Inlet;
    1352         sptop.Outlet2 to pump1.Inlet;   
    1353         pump1.Outlet to trays(top).InletL;
    1354         trays([top:topdown:bot-topdown]).OutletL to trays([top+topdown:topdown:bot]).InletL;
    1355 end
    1356 
    1357 
    1358 #* -------------------------------------------------------------------
    1359 * Refluxed Absorption Column with:
    1360 *
    1361 *       - NumberOfTrays like tray;
    1362 *       - a steady state condenser (with subcooling);
    1363 *       - a vessel drum (layed cilinder);
    1364 *       - a splitter which separate reflux and distillate;
    1365 *       - a pump in reflux stream.
    1366 *
    1367 * ------------------------------------------------------------------*
    1368 Model Refluxed_Absorption_subcoolingTeste
    1369         ATTRIBUTES
    1370         Pallete         = true;
    1371         Icon            = "icon/RefluxedSubcooling";
    1372         Brief           = "Model of a refluxed absorption column with steady condenser.";
    1373         Info            =
    1374 "== Specify ==
    1375 * the feed stream of each tray (Inlet);
    1376 * the Murphree eficiency for each tray Emv;
    1377 * the InletV stream of the bottom tray unless its flow;
    1378 * the pump head;
    1379 * the condenser pressure drop;
    1380 * the heat supllied in  the top tank;
    1381 * the heat supllied in condenser;
    1382 * both  top splitter outlet flows OR one of the splitter outlet flows and the splitter frac.
    1383        
    1384 == Initial Conditions ==
    1385 * the trays temperature (OutletL.T);
    1386 * the trays liquid level (Level) OR the trays liquid flow (OutletL.F);
    1387 * (NoComps - 1) OutletL (OR OutletV) compositions for each tray;
    1388        
    1389 * the top tank temperature (OutletL.T);
    1390 * the top tank liquid level (Level);
    1391 * (NoComps - 1) OutletL (OR OutletV) compositions;
    1392 ";
    1393        
    1394         PARAMETERS
    1395         outer PP as Plugin(Brief = "External Physical Properties", Type="PP");
    1396         outer NComp as Integer;
    1397         NumberOfTrays as Integer(Brief="Number of trays", Default=2);
    1398         topdown as Integer(Brief="Trays counting (1=top-down, -1=bottom-up)", Default=1);
    1399         top as Integer(Brief="Number of top tray");
    1400         bot as Integer(Brief="Number of bottom tray");
    1401         VapourFlow as Switcher(Valid = ["on", "off"], Default = "on");
    1402 
    1403         SET
    1404         top = (NumberOfTrays-1)*(1-topdown)/2+1;
    1405         bot = NumberOfTrays/top;
    1406        
    1407         VARIABLES
    1408         trays(NumberOfTrays) as trayTeste;
    1409         cond as condenserSteady;
    1410         ttop as tank_cylindrical;
    1411         sptop as splitter;
    1412         pump1 as pump;
    1413         alfaTopo as Real;
    1414 
    1415         EQUATIONS
    1416         switch VapourFlow
    1417                 case "on":
    1418                 cond.InletV.F*trays(top).vV = alfaTopo * trays(top).Ah * sqrt(2*(trays(top).OutletV.P -
    1419                 cond.OutletL.P + 1e-8 * 'atm') / (trays(top).alfa*trays(top).rhoV));
    1420                 when cond.InletV.F < 1e-6 * 'kmol/h' switchto "off";
    1421                
    1422                 case "off":
    1423                 cond.InletV.F = 0 * 'mol/s';
    1424                 when trays(top).OutletV.P > cond.OutletL.P + 1e-1 * 'atm' switchto "on";
    1425         end     
    1426        
    1427         CONNECTIONS
    1428         #vapor
    1429         trays([top+topdown:topdown:bot]).OutletV to trays([top:topdown:bot-topdown]).InletV;
    1430         trays(top).OutletV to cond.InletV;
    1431        
    1432         #liquid
    1433         cond.OutletL to ttop.Inlet;     
    1434         ttop.Outlet to sptop.Inlet;
    1435         sptop.Outlet2 to pump1.Inlet;   
    1436         pump1.Outlet to trays(top).InletL;
    1437         trays([top:topdown:bot-topdown]).OutletL to trays([top+topdown:topdown:bot]).InletL;
    1438 end
    1439 
    1440 
    14411120#* -------------------------------------------------------------------
    14421121* Reboiled Stripping Column model with:
     
    14451124*       - a kettle reboiler;
    14461125*
    1447 * ------------------------------------------------------------------*
    1448 Model Reboiled_Stripping_kettleTeste
    1449         ATTRIBUTES
     1126* ------------------------------------------------------------------*#
     1127Model Reboiled_Stripping_kettle as Section_ColumnBasic
     1128       
     1129ATTRIBUTES
    14501130        Pallete         = true;
    14511131        Icon            = "icon/ReboiledKettle";
     
    14701150";
    14711151
    1472         PARAMETERS
    1473         outer PP as Plugin(Brief = "External Physical Properties", Type="PP");
    1474         outer NComp as Integer;
    1475         NumberOfTrays as Integer(Brief="Number of trays", Default=2);
    1476         topdown as Integer(Brief="Trays counting (1=top-down, -1=bottom-up)", Default=1);
    1477         top as Integer(Brief="Number of top tray");
    1478         bot as Integer(Brief="Number of bottom tray");
    1479 
    1480         SET
    1481         top = (NumberOfTrays-1)*(1-topdown)/2+1;
    1482         bot = NumberOfTrays/top;
    1483        
    1484         VARIABLES
    1485         trays(NumberOfTrays) as trayTeste;
    1486         reb as reboiler;
    1487 
    1488         CONNECTIONS
    1489         #vapor
    1490         reb.OutletV to trays(bot).InletV;
    1491         trays([top+topdown:topdown:bot]).OutletV to trays([top:topdown:bot-topdown]).InletV;
    1492        
    1493         #liquid
    1494         trays([top:topdown:bot-topdown]).OutletL to trays([top+topdown:topdown:bot]).InletL;
    1495         trays(bot).OutletL to reb.InletL;
     1152VARIABLES
     1153
     1154        out     VapourDrawOff   as vapour_stream                (Brief="Vapour Outlet in the section", PosX=1, PosY=0.325,Protected = true);
     1155        out     LiquidDrawOff           as liquid_stream                        (Brief="Liquid Outlet in the section", PosX=1, PosY=0.47,Protected = true);
     1156       
     1157        in              LiquidInlet             as      stream                  (Brief="Liquid Inlet in the section", PosX=0.20, PosY=0);
     1158        out     VapourOutlet    as vapour_stream        (Brief="Vapour Outlet in the section", PosX=0.05, PosY=0);
     1159       
     1160        REBOILER as reboiler;
     1161
     1162CONNECTIONS
     1163#vapor
     1164        REBOILER.OutletV to trays(NumberOfTrays).InletV;
     1165       
     1166#liquid
     1167        trays(NumberOfTrays).OutletL to REBOILER.InletL;
     1168
    14961169end
    14971170
     
    15061179*
    15071180* ------------------------------------------------------------------*
    1508 Model Reboiled_Stripping_thermosyphonTeste
     1181Model Reboiled_Stripping_thermosyphon
    15091182        ATTRIBUTES
    15101183        Pallete         = true;
     
    15491222        tbottom as tank;
    15501223
    1551         CONNECTIONS
    1552         #vapor
    1553         reb.OutletV to trays(bot).InletV;
    1554         trays([top+topdown:topdown:bot]).OutletV to trays([top:topdown:bot-topdown]).InletV;
    1555        
    1556         #liquid
    1557         trays([top:topdown:bot-topdown]).OutletL to trays([top+topdown:topdown:bot]).InletL;
    1558         trays(bot).OutletL to tbottom.Inlet;
    1559         tbottom.Outlet to spbottom.Inlet;
    1560         spbottom.Outlet2 to reb.InletL;
    1561 end
    1562 
    1563 
    1564 #* -------------------------------------------------------------------
    1565 * Reboiled Absorption Column model with:
    1566 *
    1567 *       - NumberOfTrays like tray;
    1568 *       - a kettle reboiler;
    1569 *
    1570 * ------------------------------------------------------------------*
    1571 Model Reboiled_Absorption_kettleTeste
    1572         ATTRIBUTES
    1573         Pallete         = true;
    1574         Icon            = "icon/ReboiledKettle";
    1575         Brief           = "Model of a reboiled absorption column with dynamic reboiler.";
    1576         Info            =
    1577 "== Specify ==
    1578 * the feed stream of each tray (Inlet);
    1579 * the Murphree eficiency for each tray Emv;
    1580 * the vapour flow leaving the top of the column;
    1581 * the InletL stream of the top tray;
    1582 * the heat supllied in the reboiler;
    1583 * the reboiler liquid outlet flow (OutletL.F);
    1584        
    1585 == Initial Conditions ==
    1586 * the trays temperature (OutletL.T);
    1587 * the trays liquid level (Level) OR the trays liquid flow (OutletL.F);
    1588 * (NoComps - 1) OutletL (OR OutletV) compositions for each tray;
    1589        
    1590 * the reboiler temperature (OutletL.T);
    1591 * the reboiler liquid level (Level);
    1592 * (NoComps - 1) OutletL (OR OutletV) compositions.
    1593 ";
    1594        
    1595         PARAMETERS
    1596         outer PP as Plugin(Brief = "External Physical Properties", Type="PP");
    1597         outer NComp as Integer;
    1598         NumberOfTrays as Integer(Brief="Number of trays", Default=2);
    1599         topdown as Integer(Brief="Trays counting (1=top-down, -1=bottom-up)", Default=1);
    1600         top as Integer(Brief="Number of top tray");
    1601         bot as Integer(Brief="Number of bottom tray");
    1602 
    1603         SET
    1604         top = (NumberOfTrays-1)*(1-topdown)/2+1;
    1605         bot = NumberOfTrays/top;
    1606        
    1607         VARIABLES
    1608         trays(NumberOfTrays) as trayTeste;
    1609         reb as reboiler;
    1610 
    1611         CONNECTIONS
    1612         #vapor
    1613         reb.OutletV to trays(bot).InletV;
    1614         trays([top+topdown:topdown:bot]).OutletV to trays([top:topdown:bot-topdown]).InletV;
    1615        
    1616         #liquid
    1617         trays([top:topdown:bot-topdown]).OutletL to trays([top+topdown:topdown:bot]).InletL;
    1618         trays(bot).OutletL to reb.InletL;
    1619 end
    1620 
    1621 
    1622 #* -------------------------------------------------------------------
    1623 * Reboiled Absorption Column model with:
    1624 *
    1625 *       - NumberOfTrays like tray;
    1626 *       - a vessel in the bottom of column;
    1627 *       - a splitter which separate the bottom product and the stream to reboiler;
    1628 *       - steady state reboiler (thermosyphon);
    1629 *
    1630 * ------------------------------------------------------------------*
    1631 Model Reboiled_Absorption_thermosyphonTeste
    1632         ATTRIBUTES
    1633         Pallete         = true;
    1634         Icon            = "icon/ReboiledThermosyphon";
    1635         Brief           = "Model of a reboiled absorption column with steady reboiler.";
    1636         Info            =
    1637 "== Specify ==
    1638 * the feed stream of each tray (Inlet);
    1639 * the Murphree eficiency for each tray (Emv);
    1640 * the vapour flow leaving the top of the column;
    1641 * the InletL stream of the top tray;
    1642 * the heat supllied in bottom tank;
    1643 * the heat supllied in the reboiler;
    1644 * the Outlet1 flow in the bottom splitter (spbottom.Outlet1.F) that corresponds to the bottom product;
    1645        
    1646 == Initial Conditions ==
    1647 * the trays temperature (OutletL.T);
    1648 * the trays liquid level (Level) OR the trays liquid flow (OutletL.F);
    1649 * (NoComps - 1) OutletL (OR OutletV) compositions for each tray;
    1650 
    1651 * the bottom tank temperature (OutletL.T);
    1652 * the bottom tank liquid level (Level);
    1653 * (NoComps - 1) OutletL (OR OutletV) compositions.
    1654 ";
    1655        
    1656         PARAMETERS
    1657         outer PP as Plugin(Brief = "External Physical Properties", Type="PP");
    1658         outer NComp as Integer;
    1659         NumberOfTrays as Integer(Brief="Number of trays", Default=2);
    1660         topdown as Integer(Brief="Trays counting (1=top-down, -1=bottom-up)", Default=1);
    1661         top as Integer(Brief="Number of top tray");
    1662         bot as Integer(Brief="Number of bottom tray");
    1663 
    1664         SET
    1665         top = (NumberOfTrays-1)*(1-topdown)/2+1;
    1666         bot = NumberOfTrays/top;
    1667        
    1668         VARIABLES
    1669         trays(NumberOfTrays) as trayTeste;
    1670         reb as reboilerSteady;
    1671         spbottom as splitter;
    1672         tbottom as tank;
    1673        
    16741224        CONNECTIONS
    16751225        #vapor
Note: See TracChangeset for help on using the changeset viewer.