BioSTEAMDevelopmentGroup / biosteam

The Biorefinery Simulation and Techno-Economic Analysis Modules; Life Cycle Assessment; Chemical Process Simulation Under Uncertainty
Other
179 stars 35 forks source link

High CAPEX cost at low pumping rates #150

Closed isong29 closed 1 year ago

isong29 commented 1 year ago

Hi!

I am attempting to use the biosteam pump class to determine the cost of a vacuum pump that is pulling vacuum on the permeate side of a membrane separator. Specifically, I am attempting to use the following feeds:

''' bst.settings.set_thermo(['H2O', 'H2', 'CO2', 'CH4', 'N2', 'O2']) vacFeed = bst.Stream('VacuumFeed', phase='g', H2=2.54e-5, CH4=7.53, CO2=13.5, units='g/hr') vacFeed.show() VP = bst.units.Pump('VacPump', ins=vacFeed, outs='vacOut', dP_design=80000) VP.simulate() VP.show() VP.results() '''

I set the dP_design as 80000 Pa, as we are expecting to pull -80 kPa of vacuum. The feed Stream that is given is the flowrate of gases we expect to be pulled out from the membrane.

However, running this results in high purchasing costs of around $76,000, which seems unreasonably high. I have also tried to instead create an inlet feed at 21325 Pa and an outlet feed at 101325 Pa, but that results in even higher purchasing costs.

In the actual application of the code, I am running a membrane extraction code at a certain vacuum pressure PVac. I calculate the gas flowrates out of the membrane, and use that to create the Stream object, and use (101325 - PVac) to determine the dP_design. However, as with the above, it is resulting in purchase costs significantly higher than $10,000.

Thank you very much in advance for the help.

Best, Ian

isong29 commented 1 year ago

Apologies for the second post here, it seems like the reason the cost is so high is a significant head. However, I am having trouble understanding the units in the _pump unit. Is the units of dP_design in Pascals? Since I am setting dP_design to be ~80,000 Pa, I am getting heads of ~60,000 ft.

yoelcortes commented 1 year ago

@isong29,

biosteam.Pump only increases pressure of liquids. What you want to use is biosteam.VacuumSystem as an auxiliary unit. A full example is in the docstring:

https://github.com/BioSTEAMDevelopmentGroup/biosteam/blob/master/biosteam/units/vacuum_system.py

Note that you can choose your vacuum_system_preference to be "Liquid-ring pump". The sizing is based on gas suction, including in-leakage. I highly recommend reading the following to understand vacuum systems:

Seider, W. D.; Lewin, D. R.; Seader, J. D.; Widagdo, S.; Gani, R.; Ng, M. K. Cost Accounting and Capital Cost Estimation. In Product and Process Design Principles; Wiley, 2017; pp 426–485.

Thanks,

isong29 commented 1 year ago

Hi @yoelcortes

Thank you for the fast response here.

I looked at the Seider book, and found that the smallest vacuum flowrates are about 50 ft^3/min. When sizing a vacuum pump for smaller applications (~20-50 mL/min, or between 7e-4 to 1.2e-3 ft^3/min), do you have any recommendations for either the CAPEX or OPEX?

I attempted to use the vacuumvessel class that you wrote as an example, setting the volume to be the volume of the permeate side of the membrane module, but found that the CAPEX cost is still large. I am wondering if this might be due to the costing equation from Seider Table 16.32, that the Liquid-ring pump has a minimum flowrate of 50 ft^3/min.

Thank you again,

yoelcortes commented 1 year ago

You'll need to find another cost correlation applicable at smaller flow rates