# $Id: rathore.in 2 2004-04-17 20:20:23Z ucecesf $ # # rathore.in # # Simple separation sequence synthesis example based on the problem # described by Rathore et al, AIChE J, May 1974. # # Copyright (c) 2000-2001, Eric S Fraga, UCL, All rights reserved. # # # -------------------------------------------- # # Give the synthesis problem a name and a description. These are used # for report generation. All output will appear in a subdirectory # named after the project name. # project Rathore title "Separation sequence synthesis [Rathore et al., 1974]" # # tell the system where to find the classes referenced below. The # second of these is particularly important as it enables us to use # single line definitions of unit variables. # use uk.ac.ucl.che.esf.fish.ps # for base stream and component classes use uk.ac.ucl.che.esf.fish.units # for the unit models and unit variables # # Define the constants used by the rest of the input file, specifically # for definining the component discretizations. # variables constant Base 10 "Percentage component flow discretization" # define the flows of the components in the feed constant Fpropane " 45.36 *kmol/hr" constant Fibutane "136.08 *kmol/hr" constant Fnbutane "226.8 *kmol/hr" constant Fipentane "181.44 *kmol/hr" constant Fnpentane "317.52 *kmol/hr" constant FeedFlow "Fpropane+Fibutane+Fnbutane+Fipentane+Fnpentane" end # # The feed stream consists of five hydrocarbon components. The base # flow for each component is 10% of the total initial flow for that # component. In other words, component flows will map to the nearest # 10% of the initial flow. This is sufficient for the level of detail # desired for this type of problem. The main effect it has is on the # purity specification of the final product streams. # KistaComponent propane base "Fpropane/Base" bp 230.8 cpv -4.224 3.062e-1 -1.586e-4 3.214e-8 lhtc "0.583 *kW/m^2/K" vhtc "5.0 *kW/m^2/K" end KistaComponent ibutane base "Fibutane/Base" bp 263.0 cpv -1.390 3.847e-1 -1.846e-4 2.895e-8 lhtc "0.583 *kW/m^2/K" vhtc "5.0 *kW/m^2/K" end KistaComponent nbutane base "Fnbutane/Base" bp 272.4 cpv 9.487 3.313e-1 -1.108e-4 -2.821e-9 lhtc "0.583 *kW/m^2/K" vhtc "5.0 *kW/m^2/K" end KistaComponent ipentane base "Fipentane/Base" bp 301.0 cpv -9.525 5.066e-1 -2.729e-4 5.723e-8 lhtc "0.583 *kW/m^2/K" vhtc "5.0 *kW/m^2/K" end KistaComponent npentane base "Fnpentane/Base" bp 309.3 cpv -3.626 4.873e-1 -2.580e-4 5.304e-8 lhtc "0.583 *kW/m^2/K" vhtc "5.0 *kW/m^2/K" end # # The feed consists of a single liquid phase made up of the components # listed above. # Phase feedphase comps propane ibutane nbutane ipentane npentane x 0.05 0.15 0.25 0.2 0.35 flow "FeedFlow" phase liquid end # # Define the actual feed stream. There is only one pressure level # defined. # PStream feed # the stream has one phase add feedphase # define the valid pressure range and number of values in that # range prange "6.8 *atm" "6.8 *atm" nstates 1 # and set the actual pressure P "6.8 *atm" # map to discrete space. this is not strictly necessary but is # useful to ensure that the feed definition starts at a point # in discrete space map end # # Discrete utilities are available for both heating and cooling. The # format of each line is: # # type description Tin Tout TransferCoefficient Cost in $/J # # we define four hot utilities (stream at a variety of pressures) and # four cold utilities (cold water and ammonia at different # temperatures). Note that the cost of cooling water is significantly # lower than any of the other cold utilities and it is therefore # unlikely that Ammonia will ever be used. However, the option is # there and it is up to the optimization procedures to choose the # correct utilities in order to minimize the objective function # criteria specified (see below) # DiscreteUtilities utils hot "Steam @ 28.23 atm" 503.5 503.5 "5000 *W/m^2/K" "1.0246 / GJ" hot "Steam@11.22atm" 457.6 457.6 "5000 *W/m^2/K" "0.773824 / GJ" hot "Steam@4.08atm" 417.0 417.0 "5000 *W/m^2/K" "0.573203 / GJ" hot "Steam@1.70atm" 388.2 388.2 "5000 *W/m^2/K" "0.41796 / GJ" cold "CooldWater@32.2degC" 305.2 305.2 "500 *W/m^2/K" "0.0668737 / GJ" cold "Ammonia@1degC" 274.00 274.00 "500 *W/m^2/K" "1.65035 / GJ" cold "Ammonia@-17.68degC" 255.32 255.32 "500 *W/m^2/K" "2.96871 / GJ" cold "Ammonia@-21.67degC" 251.33 251.33 "500 *W/m^2/K" "3.96226 / GJ" end # # the only processing technology is a distillation unit for which we # specify a single pressure level which happens to match the the same # pressure range specified for the feed stream, and hence all other # streams created by Jacaranda. It is advisable that the pressure # ranges and number of discrete values used by units (such as # Distillation) be consistent with the pressure levels that can be # represented in the stream objects. # Distillation dist Real P "6.8 *atm" "6.8 *atm" 1 end # # and we define a product tank which accepts any stream which has one # component with greater than 90% purity. # ProductTank pure # The specification for the product streams is uses the variable 'x' # which is a vector made up of the mole fractions of the components # in the feed to this unit. The expression 'x>0.90' creates a vector # of the same size with values 1 or 0 depending on whether the # individual mole fraction is greater than 0.90 or not (1=true, # 0=false). The '$' operator takes the sum of the values in the # vector so this full expression will return a value of 1 if one # component matches the spefication and 0 otherwise. Note that it # is impossible for more than one component to match the # specification within any given stream as the mole fractions must # add up to 1. Expression spec "$(x>0.90)" # The unit must be marked as interesting to indicate that any # path in the search graph which terminates at one of these # nodes is an interesting path, i.e. one that leads to a # desired product. this is used by the synthesis procedure to enable # us to generate different solutions when the user wishes to have # more than one solution generated. the variable 'nbest' in the # synthesis problem class (defined below) can be set to request any # number of solutions. interesting # interesting leaf node for n-best diversity end # # we also need at least one feed tank for the raw material. the feed # stream defined above is associated with this feed tank. # FeedTank feedTank Stream feed feed end # # we will ask for solutions to be ranked in three separate lists, the # first according to capital cost, the second according to operating # cost, and the third a combination of the two yielding a form of # annualized cost. Each criterion is given a name, the type of # operation required to combine criteria values from different sources # (options are sum or max), and the actual expression for evaluating # the criterion. The variables "opercost" and "capcost" are used for # operating and capital costs respectively by all the standard unit # models (and heat exchangers) in the FiSH distribution. # Criteria criteria # # We define each criterion separately. The last three arguments in # each criterion expression are optional and describe the units for # the values generated, the lower bound on the particular criterion, # and the format to use for output. # criterion Capital sum capcost "$" 0.0 "#,##0" criterion Operating sum opercost "$/yr" 0.0 "#,##0" criterion Annualized sum "capcost/2.0 + opercost" "$/yr" 0.0 "#,##0" end # # before attempting a synthesis problem, we tell the system the # objects to use for all the global settings which affect the # synthesis procedures. these consist of the set of utilities, the # objective function criteria, and the unit models that are available # for building up process flowsheets. # Data utils utils # which utilities object to use criteria criteria # the ranking criteria # we now specify the list of units which are allowed for # processing unit dist # distillation unit pure # and pure product tanks unit feedTank # and the feed tank print # output all global settings end # # now we actually define the synthesis problem based on the stream and # units defined above. The number of best solutions to generate can be # specified in the command line. For example, # # java esf.Main -n 3 rathore.in # # would ask for the best three solutions to be generated for each # criterion specified above. Alternatively, the input file can have # this value specified directly by adding the line # # nbest 3 # # within the PS_Problem object definition below. # PS_Problem rathore representation units # include unit info in n-best diversity # solve the problem ... solve print # and show the best solutions found print short # showing the basic structure as well stats # display some statistics about the search export # generate the flowsheets end # and that's all! if one wants to save all objects created by # Jacaranda in this input file, the option "-s" can be given: # # java esf.Main -s rathore.in # # In this case, objects will be saved in the user's esfobjects # sub-directory off the user's home directory, if it # exists. Otherwise, the objects will be saved in the current # directory. If objects have been saved, one can browse them using the # command: # # java esf.ui.Manager #