# $Id: penicillin.in 2 2004-04-17 20:20:23Z ucecesf $ ############################################################################# # This is base case for the example presented in Steffens et al. (1999): # # @article{steffens-etal-1999, # author = {M. A. Steffens and E. S. Fraga # and I. D. L. Bogle}, # year = 1999, # title = {Multicriteria process synthesis for generating # sustainable and economic bioprocesses}, # journal = cace, # volume = 23, # number = 10, # pages = {1455-1467} # } # # The aim is to identify the optimal process for the production of # penicillin, including the design of the fermenter and the # purification section that follows. There are two criteria used for # ranking solutions: economics based on an annualized cost using a 2.5 # year amortization period and the sustainability process index (SPI) # which gives an indication of the environmental impact of the # process: # # @Article{fraga-etal-2003c, # author = {Eric S. Fraga and A. R. F. O'Grady and Lazaros # G. Papageorgiou}, # title = {Design and optimization of environmentally benign # processes}, # journal = {PINSA-A (Physical Sciences)}, # year = 2003, # note = {in press} # } # # ############################################################################# ############################################################################# # Originally written by Marc Steffens, 1999. # Subsequently revised by Eric S Fraga to keep up-to-date with changes # to Jacaranda. ############################################################################# project Penicillin title Design of penicillin process subject to economic and environmental criteria ############################################################################# # We start by defining and setting some global constants required by # this input file, specifically the number of years of operation in a # year and some units for easier input file definition. ############################################################################# define set hpy 8500.0 # hours of operation in a year constant L "m*m*m/1000.0" "Litre" constant um "m/1.0e6" "micrometre" print # display all constants & variables end ############################################################################# # In Jacaranda, all objects are part of Java packages. The USE # statement allows us to specify which packages should be searched for # class definitions for objects which are not fully qualified. Again, # this is simply to make the input file easier to write and read. The # majority of the bioprocessing classes are in the uk.ac.ucl.che.mas # package but we ask the system to look from uk.ac.ucl.che, a more # top-level package. ############################################################################# use uk.ac.ucl.che # Chemical Engineering UCL base package use uk.ac.ucl.che.esf.fish.units # Unit model classes ############################################################################# # The first real step in the definition of our synthesis problem is # the definition of all the species that may appear in any process # flowsheet we generate. The species are primarily biochemicals but # also include water and glucose. For each species, we define the # physical properties constants and data for the estimation of the # sustainability process index (spidata entry for each species). The # physical property data include charge, solubility, density, # hydrophobicity, etc. # # All the species objects are part of the # uk.ac.ucl.che.mas.BioSynthesis Jacaranda package. ############################################################################# mas.BioSynthesis.BioChemical glucose charge 0.0 7.0 molwt 180.16 size "1.0e-3 * um" base "2.0 * kg/hr" phase L solubility "water" 700.0 solubility "butylacetate" 100.0 K "water_butyl" 0.1 K "butyl_water" 10 K "PEG_Phosphate" 0.75 density 1300.0 hydro 0.3 spidata renewable fr 0.56 # m2/m2 yr 2.2 # kg/m2 cw 10.0 # kg/kg cs 100.0 # kg/kg sa 0.0 end end mas.BioSynthesis.BioChemical nh4 charge 1.0 4.5 0.0 5.0 molwt 28.0 size "5.0e-4 * um" base "2.0 * kg/hr" phase L solubility "water" 700.0 solubility "butylacetate" 50.0 K "water_butyl" 0.4 K "butyl_water" 0.5 K "PEG_Phosphate" 0.3 density 1050.0 hydro 0.1 spidata nonrenewable Cn 5.4 ED 0.0 Ptc 0.0 Rce 96.0 fn 0.0 cw 0.1 # kg/kg cs 0.0 # kg/kg sa 0.0 end end mas.BioSynthesis.BioChemical so4 charge -1.0 7.0 molwt 96.0 size "1.0e-3 * um" base "2.0 * kg/hr" phase L solubility "water" 700.0 solubility "butylacetate" 50.0 K "water_butyl" 0.4 K "butyl_water" 0.5 K "PEG_Phosphate" 0.3 density 1050.0 hydro 0.1 spidata nonrenewable Cn 5.4 ED 0.0 Ptc 0.0 Rce 96.0 fn 0.0 cw 0.25 # kg/kg cs 0.0 # kg/kg sa 0.0 end end mas.BioSynthesis.BioChemical antifoam charge 0.0 7.0 density 1200.0 K "water_butyl" 20.0 K "butyl_water" 0.05 K "PEG_Phosphate" 0.2 solubility "water" 0.001 solubility "butylacetate" 500.0 phase L base "2.0 * kg/hr" size "1.0e-2 * um" molwt 500 hydro 5.0 spidata nonrenewable Cn 0.0 ED 19.72 Ptc 0.0 Rce 0.0 fn 0.2 cw 0.01 # kg/kg cs 0.0 # kg/kg sa 0.0 end end mas.BioSynthesis.BioChemical filterAid charge 0.0 7.0 density 1150.0 K "water_butyl" 0.1 K "butyl_water" 10.0 K "PEG_Phosphate" 0.2 solubility "water" 0.001 solubility "butylacetate" 500.0 phase S base "2.0 * kg/hr" size "0.1 * um" molwt 1000 hydro 5.0 spidata nonrenewable Cn 1.0 ED 2.28 Ptc 0.96 Rce 2.6 fn 0.2 cs 0.0 # kg/kg cw 5.0 # kg/kg sa 0.0 end end mas.BioSynthesis.BioChemical phenylAceticAcid charge 0.0 4.0 -1.0 4.5 molwt 136.0 K "water_butyl" 5.0 K "butyl_water" 1.0 K "PEG_Phosphate" 0.5 solubility "water" 700.0 solubility "butylacetate" 100.0 phase L base "2.0 * kg/hr" density 1000.0 hydro 0.05 size "7.0e-3 * um" spidata nonrenewable Cn 0.0 ED 18.78 Ptc 0.0 Rce 0.0 fn 0.2 cs 0.0 # kg/kg cw .5 # kg/kg sa 0.0 end end mas.BioSynthesis.BioChemical potassiumAcetate charge 1.0 7.0 molwt 200.0 K "water_butyl" 0.8 K "butyl_water" 1.0 K "PEG_Phosphate" 0.5 solubility "water" 700.0 solubility "butylacetate" 100.0 phase L base "2.0 * kg/hr" density 1000.0 hydro 0.05 size "1.0e-3 * um" spidata nonrenewable Cn 5.4 ED 0.0 Ptc 0.0 Rce 96.0 fn 0.0 cs 0.0 # kg/kg cw .5 # kg/kg sa 0.0 end end ############################################################################# # This is the key species: the desired product. ############################################################################# mas.BioSynthesis.BioChemical penicillin charge 0.0 2.0 -0.5 3.0 -1.0 4.0 molwt 350 size "1.0e-3 * um" base "2.0 * kg/hr" phase L solubility "water" 20.0 solubility "butylacetate" 10.0 K "water_butyl" 40.0 K "butyl_water" 20.0 K "PEG_Phosphate" 60.0 density 1050.0 hydro 0.3 spidata nonrenewable Cn 0.0 ED 5.0 Ptc 0.0 Rce 0.0 fn 0.0 cs 0.0 # kg/kg cw .2 # kg/kg sa 0.0 end end mas.BioSynthesis.BioChemical cellChemical charge -1.0 2.0 -0.5 3.0 molwt 500000 size "5.0e-2 * um" base "2.0 * kg/hr" phase L solubility "water" 50.0 solubility "butylacetate" 0.001 K "water_butyl" 0.05 K "butyl_water" 20.0 K "PEG_Phosphate" 60.0 density 1000.0 hydro 0.3 spidata nonrenewable Cn 0.0 ED 100.0 Ptc 0.0 Rce 0.0 fn 0.0 cs 0.0 # kg/kg cw .1 # kg/kg sa 0.0 end end ############################################################################# # The species include solvents as well. ############################################################################# mas.BioSynthesis.BioChemical butylacetate charge 0.0 7.0 molwt 116.0 solubility "water" 0.01 density 950.0 hydro 50.0 size ".5e-3 * um" base "5.00 * kg/hr" phase L spidata nonrenewable Cn 0.0 ED 40.0 Ptc 0.0 Rce 0.0 fn 1.0 cs 0.0 # kg/kg cw .002 # kg/kg sa 0.0 end end mas.BioSynthesis.BioChemical PEG charge 0.0 7.0 molwt 6000.0 size "0.07 * um" density 980.0 hydro 50.0 base "5.0 * kg/hr" phase L solubility "water" 0.01 solubility "butylacetate" 50.0 K "water_butyl" 0.01 K "butyl_water" 100.0 K "PEG_Phosphate" 20.0 spidata nonrenewable Cn 0.0 ED 19.72 Ptc 0.0 Rce 0.0 fn 0.0 cs 0.0 # kg/kg cw .5 # kg/kg sa 0.0 end end mas.BioSynthesis.BioChemical phosphate charge -1.0 7.0 molwt 95.0 size "4.0e-3 * um" density 1020.0 hydro 0.05 base "10.0 * kg/hr" phase L solubility "water" 600.0 solubility "butylacetate" 25.0 K "water_butyl" 0.01 K "butyl_water" 100.0 K "PEG_Phosphate" 0.05 spidata nonrenewable Cn 1.0 ED 0.0 Ptc 0.99 Rce 0.88 fn 1.0 cs 0.0 # kg/kg cw .25 # kg/kg sa 0.0 end end mas.BioSynthesis.Water water base "50.0 * kg/hr" spidata renewable fr 0.2 # m2/m2 yr 0.5 # kg/m2 cw 1.0e5 # kg/kg cs 1.0e7 # kg/kg sa 0.0 end end ############################################################################# # This input file defines a variety of streams used by specific units # (see below for lists of units). Of particular importance is the # innoculum stream which is essentially the feed stream for any # process we generate. It will be fed into a fermenter which will # always be the first unit in a flowsheet. The synthesis procedure # will essentially design the downstream purification steps. ############################################################################# mas.BioSynthesis.BioStream innoculum flow "100000.0 * L" base "25.0 * L/hr" solvent water "900.0 * g/L" biochemical glucose "100.0 * g/L" biochemical nh4 "0.5 * g/L" biochemical so4 "0.5 * g/L" biochemical antifoam "2.5 * g/L" biochemical phenylAceticAcid "0.5 * g/L" biochemical penicillin "0.1 * g/L" cells pchry "4.0 * g/L" size "0.9 * um" density 1090.0 base "5.0 * kg/hr" K "PEG_Phosphate" 0.05 K "water_butyl" 0.05 K "butyl_water" 20.0 biochemical cellChemical 4.0 spidata nonrenewable ED 20.0 # m2/m2 cw 0.1 # kg/kg cs 0.0 # kg/kg sa 0.0 end end end mas.BioSynthesis.BioStream butylstream solvent butylacetate "1100.0 * g/L" end mas.BioSynthesis.BioStream waterStream solvent water "1000.0 * g/L" end ############################################################################# # The next step is to define the list of the available units for # generating process flowsheets. The units include a fermenter (which # acts as a feed tank), a variety of purification/separation units, # and the product tanks, including those for waste products. The units # can only be defined once the lists of species and streams have been # generated (see above). # # All the unit objects are defined in the uk.ac.ucl.che.mas.BioUnits # package. # # The source unit for a process is typically a feed tank. In this # problem, however, we use a fermenter to generate the feed stream to # the purification stage. The fermenter model is dynamic. ############################################################################# mas.BioUnits.Fermenter fermenter Stream innoculum innoculum Component product penicillin Real feedFlow "250.0 * L/hr" "250.0 * L/hr" 1 Real gluConc "150.0 * g/L" "150.0 * g/L" 1 Real emptyTime "50.0 * hr" "50.0 * hr" 1 Real time "250.0 * hr" "250.0 * hr" 1 end ############################################################################# # the rest of the units are either separation units or product # units. The former, in principle, will have alternative designs # possible. The latter are primarily defined by a specification that # the feed to the unit must meet and a value of the stream if the # specification is met. ############################################################################# mas.BioUnits.TwoPhaseExtractor organicExtractor Stream solvent butylstream Real yield 0.95 0.95 1 String product "penicillin" Real sRatio 0.5 0.5 1 end mas.BioUnits.TwoPhaseExtractor backExtractor Stream solvent waterStream Real yield 0.95 0.95 1 String product "penicillin" Real sRatio 0.2 0.2 1 end mas.BioUnits.ATPS atps String product "penicillin" Component PEG PEG Real PEGconc 80.0 Component phosphate phosphate Real phosphateConc 85.0 Real volRatio 1.5 1.5 1 Real n 1.1 end mas.BioUnits.Crystalliser crystalliser String product "penicillin" Real n 1.5 Component potAcetate potassiumAcetate Real yield 0.95 0.95 1 # the limit option to a unit is used to limit the number of # occurences of a unit in a solution flowsheet. This is only # applicable when using the QualifiedProblem class but this # input file uses PS_Problem which does not support this # feature. Therefore, this option is ignored in this case. limit end mas.BioUnits.MicroFilter microfilter Real rejectConc 250.0 650.0 2 Real n 2.0 end mas.BioUnits.UltraFilter concentrate Real rejectConc 250 250 1 Real maxSize "0.1 * um" Real n 2.0 end mas.BioUnits.RotaryDrum rotaryDrum Real solidsConc 200.0 650.0 2 Component filterAid filterAid Real filterAidRatio 0.5 0.5 1 limit # see above... end mas.BioUnits.Centrifuge centrifuge Real slurryConc 150 150 1 end mas.BioUnits.AnionExchange anionExchange Real pH 6 6 1 Real n 1.1 Real capcost 3.0e5 String Component-name "penicillin" end ############################################################################# # the following units define allowable products. The target of this # problem is the production of penicillin with specifications embodied # in the CrystalTank unit model definition. ############################################################################# mas.BioUnits.CrystalTank productTank String productName "penicillin" Real conc 600.0 Real impurities 0.06 Real productValue 20.0 # This option indicates that any branch of a process flowsheet # that has this unit in it is considered "interesting". A # branch not containing any interesting unit is denoted by # "..." in the terse encoding of structure. The terse encoding # of structure is used to compare alternative structures for # similarity in order to ensure the greatest diversity # possible when generating more than a single flowsheet for a # problem. For single solutions (nbest=1), this option has # little effect. interesting end ############################################################################# # waste products are given a cost. For environmental measures, we have # a list of pollutants (with associated limits) as well. ############################################################################# mas.BioUnits.WasteTank wasteTank String productName "penicillin" model "capcost = 1e5" Real streamValue 1e-3 Real prodFlow "10.0 * kg/hr" StringArray pollutants butylacetate glucose nh4 so4 antifoam phenylAceticAcid pottasiumAcetate penicillin PEG phosphate RealArray limits 0.1 50.0 4.0 1.0 10.0 0.5 0.5 0.05 20.0 0.2 end ############################################################################# # A tank is a generic tank which accepts any stream at a cost. # # The default model has a fixed capital cost and an operating cost # that depends on the stream flow and density. ############################################################################# mas.BioUnits.Tank tank end ############################################################################# # define the criteria which will be used to rank alternative process # flowsheets. In this case, we have a two criteria. The first is # economic and is based on the annualized cost. The capital cost # (capcost) is amortised over a period of 2.5 years and added to the # annual operating cost (opercost). The revenue (per year) generated # by the product is subtracted from this annualized cost. Profitable # processes should have negative values for the AnnualizedCost # criterion. # # The sustainability index is the sum of the SPI values generated by # each unit and particularly by the waste tanks. It is an estimate of # the land area required to sustain the impact of the process on the # environment. ############################################################################# esf.fish.ps.Criteria rankingCriteria criterion AnnualizedCost sum "capcost/2.5 + opercost - revenue" "$/y" -3e6 "#,##0.00" criterion Sustainability sum "SPI" "m^2/y" 0.0 "0.00E00" end ############################################################################# # Once the species, streams, units and evaluation criteria have been # defined, we can specify the global data object for the Jacaranda # system. This object is used to let Jacaranda know what technologies # are available for generating flowsheets and what criteria to use for # ranking. ############################################################################# esf.fish.ps.Data penicillinData criteria rankingCriteria unit fermenter unit productTank unit wasteTank unit organicExtractor unit crystalliser unit backExtractor unit atps unit microfilter unit concentrate unit centrifuge unit rotaryDrum unit anionExchange print end ############################################################################# # finally, we define the actual synthesis problem. The PS_Problem # class is suitable for pure separation problems. The only special # option we use is "leafprune" which means that the search is # truncated immediately at any node when a product or waste tank is # found to accept the stream associated with the node. This implies # that certain alternative processes are not generated. The order of # the units in the global data object, defined above, is therefore # important and provides a form of heuristic. ############################################################################# esf.fish.ps.PS_Problem penicillinProcess leafprune true solve print stats print short export # generate process flowsheets objects end