MolecularSieve#

class MolecularSieve(ID='', ins=None, outs=(), thermo=None, **kwargs)[source]#

Create an ethanol/water molecular sieve for bioethanol plants. The molecular sieve is modeled as a component wise separator. Costing is based on scaling by the 6/10ths rule from an NREL TEA report [1].

Parameters:
  • ins (Stream], optional) –

    • [0] Feed (gas)

  • outs (Stream], optional) –

    • [0] Split stream (gas)

    • [1] Remainder stream (gas)

  • split (array_like) – Componentwise split to the 0th output stream

Examples

>>> from biosteam import Stream, settings
>>> from biosteam.units import MolecularSieve
>>> settings.set_thermo(['Water', 'Ethanol'], cache=True)
>>> feed = Stream('feed', flow=(75.7, 286), T=351.39, phase='g')
>>> bp = feed.bubble_point_at_T()
>>> feed.T = bp.T
>>> MS1 = MolecularSieve('MS1', ins=feed,
...                      outs=('ethanol_rich', 'water_rich'),
...                      split=dict(Water=0.160,
...                                 Ethanol=0.925))
>>> MS1.simulate()
>>> MS1.show(T='degC', P='atm', composition= True)
MolecularSieve: MS1
ins...
[0] feed
    phase: 'g', T: 78.24 degC, P: 1 atm
    composition (%): Water    20.9
                     Ethanol  79.1
                     -------  362 kmol/hr
outs...
[0] ethanol_rich
    phase: 'g', T: 78.24 degC, P: 1 atm
    composition (%): Water    4.38
                     Ethanol  95.6
                     -------  277 kmol/hr
[1] water_rich
    phase: 'g', T: 78.24 degC, P: 1 atm
    composition (%): Water    74.8
                     Ethanol  25.2
                     -------  85 kmol/hr
>>> MS1.results()
Molecular sieve                  Units       MS1
Electricity         Power           kW      14.2
                    Cost        USD/hr      1.11
Low pressure steam  Duty         kJ/hr  3.21e+06
                    Flow       kmol/hr        83
                    Cost        USD/hr      19.7
Cooling water       Duty         kJ/hr -1.18e+05
                    Flow       kmol/hr      80.9
                    Cost        USD/hr    0.0395
Design              Flow rate    kg/hr  2.13e+03
Purchase cost       Column         USD  6.85e+05
Total purchase cost                USD  6.85e+05
Utility cost                    USD/hr      20.9

References

line: str = 'Molecular sieve'#

class-attribute Name denoting the type of Unit class. Defaults to the class name of the first child class

heat_utilities: list[HeatUtility, ...]#

All heat utilities associated to unit. Cooling and heating requirements are stored here (including auxiliary requirements).

power_utility: PowerUtility#

Electric utility associated to unit (including auxiliary requirements).

F_BM: dict[str, float]#

All bare-module factors for each purchase cost. Defaults to values in the class attribute _F_BM_default.

F_D: dict[str, float]#

All design factors for each purchase cost item in baseline_purchase_costs.

F_P: dict[str, float]#

All pressure factors for each purchase cost item in baseline_purchase_costs.

F_M: dict[str, float]#

All material factors for each purchase cost item in baseline_purchase_costs.

design_results: dict[str, object]#

All design requirements excluding utility requirements and detailed auxiliary unit requirements.

baseline_purchase_costs: dict[str, float]#

All baseline purchase costs without accounting for design, pressure, and material factors.

purchase_costs: dict[str, float]#

Itemized purchase costs (including auxiliary units) accounting for design, pressure, and material factors (i.e., F_D, F_P, F_M). Items here are automatically updated at the end of unit simulation.

installed_costs: dict[str, float]#

All installed costs accounting for bare module, design, pressure, and material factors. Items here are automatically updated at the end of unit simulation.

equipment_lifetime: int | dict[str, int]#

Lifetime of equipment. Defaults to values in the class attribute _default_equipment_lifetime. Use an integer to specify the lifetime for all items in the unit purchase costs. Use a dictionary to specify the lifetime of each purchase cost item.

run_after_specifications: bool#

Whether to run mass and energy balance after calling specification functions

prioritize: bool#

Whether to prioritize unit operation specification within recycle loop (if any).

parallel: dict[str, int]#

Name-number pairs of baseline purchase costs and auxiliary unit operations in parallel. Use ‘self’ to refer to the main unit. Capital and heat and power utilities in parallel will become proportional to this value.

responses: set[GenericResponse]#

Unit design decisions that must be solved to satisfy specifications. While adding responses is optional, simulations benefit from responses by being able to predict better guesses.