distillation#

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

Abstract distillation column class. The Murphree efficiency is based on the modified O’Connell correlation [2]. The diameter is based on tray separation and flooding velocity [1] [3]. Purchase costs are based on correlations compiled by Warren et. al. [4].

Parameters:
  • ins (Stream], optional) – Inlet fluids to be mixed into the feed stage.

  • outs (Stream], optional) –

    • [0] Distillate

    • [1] Bottoms product

  • LHK (tuple[str]) – Light and heavy keys.

  • y_top (float) – Molar fraction of light key to the light and heavy keys in the distillate.

  • x_bot (float) – Molar fraction of light key to the light and heavy keys in the bottoms product.

  • Lr (float) – Recovery of the light key in the distillate.

  • Hr (float) – Recovery of the heavy key in the bottoms product.

  • k (float) – Ratio of reflux to minimum reflux.

  • Rmin (float, optional) – User enforced minimum reflux ratio. If the actual minimum reflux ratio is more than Rmin, this enforced value is ignored. Defaults to 0.3.

  • product_specification_format=None ("Composition" or "Recovery") – If composition is used, y_top and x_bot must be specified. If recovery is used, Lr and Hr must be specified.

  • P=101325 (float) – Operating pressure [Pa].

  • vessel_material (str, optional) – Vessel construction material. Defaults to ‘Carbon steel’.

  • tray_material (str, optional) – Tray construction material. Defaults to ‘Carbon steel’.

  • tray_type='Sieve' ('Sieve', 'Valve', or 'Bubble cap') – Tray type.

  • tray_spacing=450 (float) – Typically between 152 to 915 mm.

  • stage_efficiency=None – User enforced stage efficiency. If None, stage efficiency is calculated by the O’Connell correlation [2].

  • velocity_fraction=0.8 (float) – Fraction of actual velocity to maximum velocity allowable before flooding.

  • foaming_factor=1.0 (float) – Must be between 0 to 1.

  • open_tray_area_fraction=0.1 (float) – Fraction of open area to active area of a tray.

  • downcomer_area_fraction=None (float) – Enforced fraction of downcomer area to net (total) area of a tray. If None, estimate ratio based on Oliver’s estimation [1].

  • is_divided=False (bool) – True if the stripper and rectifier are two separate columns.

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

Create a binary distillation column that assumes all light and heavy non keys separate to the top and bottoms product respectively. McCabe-Thiele analysis is used to find both the number of stages and the reflux ratio given a ratio of actual reflux to minimum reflux [1]. This assumption is good for both binary distillation of highly polar compounds and ternary distillation assuming complete separation of light non-keys and heavy non-keys with large differences in boiling points. Preliminary analysis showed that the theoretical number of stages using this method on Methanol/Glycerol/Water systems is off by less than +-1 stage. Other methods, such as the Fenske-Underwood-Gilliland method, are more suitable for hydrocarbons. The Murphree efficiency is based on the modified O’Connell correlation [2]. The diameter is based on tray separation and flooding velocity [1] [3]. Purchase costs are based on correlations compiled by Warren et. al. [4].

Parameters:
  • ins (Stream], optional) – Inlet fluids to be mixed into the feed stage.

  • outs (Stream], optional) –

    • [0] Distillate

    • [1] Bottoms product

  • LHK (tuple[str]) – Light and heavy keys.

  • y_top (float) – Molar fraction of light key to the light and heavy keys in the distillate.

  • x_bot (float) – Molar fraction of light key to the light and heavy keys in the bottoms product.

  • Lr (float) – Recovery of the light key in the distillate.

  • Hr (float) – Recovery of the heavy key in the bottoms product.

  • k (float) – Ratio of reflux to minimum reflux.

  • Rmin (float, optional) – User enforced minimum reflux ratio. If the actual minimum reflux ratio is more than Rmin, this enforced value is ignored. Defaults to 0.3.

  • product_specification_format=None ("Composition" or "Recovery") – If composition is used, y_top and x_bot must be specified. If recovery is used, Lr and Hr must be specified.

  • P=101325 (float) – Operating pressure [Pa].

  • vessel_material (str, optional) – Vessel construction material. Defaults to ‘Carbon steel’.

  • tray_material (str, optional) – Tray construction material. Defaults to ‘Carbon steel’.

  • tray_type='Sieve' ('Sieve', 'Valve', or 'Bubble cap') – Tray type.

  • tray_spacing=450 (float) – Typically between 152 to 915 mm.

  • stage_efficiency=None – User enforced stage efficiency. If None, stage efficiency is calculated by the O’Connell correlation [2].

  • velocity_fraction=0.8 (float) – Fraction of actual velocity to maximum velocity allowable before flooding.

  • foaming_factor=1.0 (float) – Must be between 0 to 1.

  • open_tray_area_fraction=0.1 (float) – Fraction of open area to active area of a tray.

  • downcomer_area_fraction=None (float) – Enforced fraction of downcomer area to net (total) area of a tray. If None, estimate ratio based on Oliver’s estimation [1].

  • is_divided=False (bool) – True if the stripper and rectifier are two separate columns.

Examples

Binary distillation assuming 100% separation on non-keys:

>>> from biosteam.units import BinaryDistillation
>>> from biosteam import Stream, settings
>>> settings.set_thermo(['Water', 'Methanol', 'Glycerol'], cache=True)
>>> feed = Stream('feed', flow=(80, 100, 25))
>>> bp = feed.bubble_point_at_P()
>>> feed.T = bp.T # Feed at bubble point T
>>> D1 = BinaryDistillation('D1', ins=feed,
...                         outs=('distillate', 'bottoms_product'),
...                         LHK=('Methanol', 'Water'),
...                         y_top=0.99, x_bot=0.01, k=2,
...                         is_divided=True)
>>> D1.simulate()
>>> # See all results
>>> D1.show(T='degC', P='atm', composition=True)
BinaryDistillation: D1
ins...
[0] feed
    phase: 'l', T: 76.082 degC, P: 1 atm
    composition (%): Water     39
                     Methanol  48.8
                     Glycerol  12.2
                     --------  205 kmol/hr
outs...
[0] distillate
    phase: 'g', T: 64.854 degC, P: 1 atm
    composition (%): Water     1
                     Methanol  99
                     --------  100 kmol/hr
[1] bottoms_product
    phase: 'l', T: 100.02 degC, P: 1 atm
    composition (%): Water     75.4
                     Methanol  0.761
                     Glycerol  23.9
                     --------  105 kmol/hr
>>> D1.results()
Divided Distillation Column                                Units        D1
Electricity         Power                                     kW     0.644
                    Cost                                  USD/hr    0.0504
Cooling water       Duty                                   kJ/hr -4.88e+06
                    Flow                                 kmol/hr  3.33e+03
                    Cost                                  USD/hr      1.63
Low pressure steam  Duty                                   kJ/hr  1.02e+07
                    Flow                                 kmol/hr       263
                    Cost                                  USD/hr      62.6
Design              Theoretical feed stage                               9
                    Theoretical stages                                  13
                    Minimum reflux                         Ratio     0.687
                    Reflux                                 Ratio      1.37
                    Rectifier stages                                    15
                    Stripper stages                                     13
                    Rectifier height                          ft      34.7
                    Stripper height                           ft      31.7
                    Rectifier diameter                        ft      3.93
                    Stripper diameter                         ft      3.19
                    Rectifier wall thickness                  in     0.312
                    Stripper wall thickness                   in     0.312
                    Rectifier weight                          lb     6e+03
                    Stripper weight                           lb  4.43e+03
Purchase cost       Rectifier trays                          USD   1.5e+04
                    Stripper trays                           USD  1.25e+04
                    Rectifier tower                          USD  4.56e+04
                    Stripper platform and ladders            USD  1.39e+04
                    Stripper tower                           USD  3.83e+04
                    Rectifier platform and ladders           USD  1.14e+04
                    Condenser - Floating head                USD  3.33e+04
                    Reflux drum - Horizontal pressur...      USD  1.02e+04
                    Reflux drum - Platform and ladders       USD  3.02e+03
                    Pump - Pump                              USD  4.37e+03
                    Pump - Motor                             USD       368
                    Reboiler - Floating head                 USD  2.71e+04
Total purchase cost                                          USD  2.15e+05
Utility cost                                              USD/hr      64.3

Binary distillation with full-condenser

>>> from biosteam.units import BinaryDistillation
>>> from biosteam import Stream, settings
>>> settings.set_thermo(['Water', 'Methanol', 'Glycerol'], cache=True)
>>> feed = Stream('feed', flow=(80, 100, 25))
>>> bp = feed.bubble_point_at_P()
>>> feed.T = bp.T # Feed at bubble point T
>>> D1 = BinaryDistillation('D1', ins=feed,
...                         outs=('distillate', 'bottoms_product'),
...                         LHK=('Methanol', 'Water'),
...                         y_top=0.99, x_bot=0.01, k=2,
...                         partial_condenser=False,
...                         is_divided=False)
>>> D1.simulate()
>>> # See all results
>>> D1.results() 
Distillation Column                              Units        D1
Electricity         Power                           kW      2.48
                    Cost                        USD/hr     0.194
Cooling water       Duty                         kJ/hr -8.41e+06
                    Flow                       kmol/hr  5.74e+03
                    Cost                        USD/hr       2.8
Low pressure steam  Duty                         kJ/hr  1.02e+07
                    Flow                       kmol/hr       263
                    Cost                        USD/hr      62.6
Design              Theoretical feed stage                     9
                    Theoretical stages                        13
                    Minimum reflux               Ratio     0.687
                    Reflux                       Ratio      1.37
                    Actual stages                             28
                    Height                          ft      52.4
                    Diameter                        ft      3.97
                    Wall thickness                  in     0.312
                    Weight                          lb   8.9e+03
Purchase cost       Trays                          USD  2.28e+04
                    Tower                          USD  5.76e+04
                    Platform and ladders           USD  1.95e+04
                    Condenser - Floating head      USD  4.35e+04
                    Pump - Pump                    USD  4.32e+03
                    Pump - Motor                   USD       441
                    Reboiler - Floating head       USD  2.71e+04
Total purchase cost                                USD  1.75e+05
Utility cost                                    USD/hr      65.6
class ShortcutColumn(ID='', ins=None, outs=(), thermo=None, **kwargs)[source]#

Create a multicomponent distillation column that relies on the Fenske-Underwood-Gilliland method to solve for the theoretical design of the distillation column and the separation of non-keys [1].The Murphree efficiency (i.e. column efficiency) is based on the modified O’Connell correlation [2]. The diameter is based on tray separation and flooding velocity [1] [3]. Purchase costs are based on correlations compiled by Warren et. al. [4].

Parameters:
  • ins (Stream], optional) – Inlet fluids to be mixed into the feed stage.

  • outs (Stream], optional) –

    • [0] Distillate

    • [1] Bottoms product

  • LHK (tuple[str]) – Light and heavy keys.

  • y_top (float) – Molar fraction of light key to the light and heavy keys in the distillate.

  • x_bot (float) – Molar fraction of light key to the light and heavy keys in the bottoms product.

  • Lr (float) – Recovery of the light key in the distillate.

  • Hr (float) – Recovery of the heavy key in the bottoms product.

  • k (float) – Ratio of reflux to minimum reflux.

  • Rmin (float, optional) – User enforced minimum reflux ratio. If the actual minimum reflux ratio is less than Rmin, this enforced value is ignored. Defaults to 0.6.

  • specification="Composition" ("Composition" or "Recovery") – If composition is used, y_top and x_bot must be specified. If recovery is used, Lr and Hr must be specified.

  • P=101325 (float) – Operating pressure [Pa].

  • vessel_material (str, optional) – Vessel construction material. Defaults to ‘Carbon steel’.

  • tray_material (str, optional) – Tray construction material. Defaults to ‘Carbon steel’.

  • tray_type='Sieve' ('Sieve', 'Valve', or 'Bubble cap') – Tray type.

  • tray_spacing=450 (float) – Typically between 152 to 915 mm.

  • stage_efficiency=None – User enforced stage efficiency. If None, stage efficiency is calculated by the O’Connell correlation [2].

  • velocity_fraction=0.8 (float) – Fraction of actual velocity to maximum velocity allowable before flooding.

  • foaming_factor=1.0 (float) – Must be between 0 to 1.

  • open_tray_area_fraction=0.1 (float) – Fraction of open area to active area of a tray.

  • downcomer_area_fraction=None (float) – Enforced fraction of downcomer area to net (total) area of a tray. If None, estimate ratio based on Oliver’s estimation [1].

  • is_divided=False (bool) – True if the stripper and rectifier are two separate columns.

Examples

>>> from biosteam.units import ShortcutColumn
>>> from biosteam import Stream, settings
>>> settings.set_thermo(['Water', 'Methanol', 'Glycerol'], cache=True)
>>> feed = Stream('feed', flow=(80, 100, 25))
>>> bp = feed.bubble_point_at_P()
>>> feed.T = bp.T # Feed at bubble point T
>>> D1 = ShortcutColumn('D1', ins=feed,
...                     outs=('distillate', 'bottoms_product'),
...                     LHK=('Methanol', 'Water'),
...                     y_top=0.99, x_bot=0.01, k=2,
...                     is_divided=True)
>>> D1.simulate()
>>> # See all results
>>> D1.show(T='degC', P='atm', composition=True)
ShortcutColumn: D1
ins...
[0] feed
    phase: 'l', T: 76.082 degC, P: 1 atm
    composition (%): Water     39
                     Methanol  48.8
                     Glycerol  12.2
                     --------  205 kmol/hr
outs...
[0] distillate
    phase: 'g', T: 64.854 degC, P: 1 atm
    composition (%): Water     1
                     Methanol  99
                     --------  100 kmol/hr
[1] bottoms_product
    phase: 'l', T: 100.02 degC, P: 1 atm
    composition (%): Water     75.4
                     Methanol  0.761
                     Glycerol  23.9
                     --------  105 kmol/hr
>>> D1.results()
Divided Distillation Column                                Units        D1
Electricity         Power                                     kW     0.761
                    Cost                                  USD/hr    0.0595
Cooling water       Duty                                   kJ/hr -7.54e+06
                    Flow                                 kmol/hr  5.15e+03
                    Cost                                  USD/hr      2.51
Low pressure steam  Duty                                   kJ/hr  1.34e+07
                    Flow                                 kmol/hr       346
                    Cost                                  USD/hr      82.4
Design              Theoretical feed stage                               8
                    Theoretical stages                                  16
                    Minimum reflux                         Ratio      1.06
                    Reflux                                 Ratio      2.12
                    Rectifier stages                                    13
                    Stripper stages                                     26
                    Rectifier height                          ft      31.7
                    Stripper height                           ft      50.9
                    Rectifier diameter                        ft      4.52
                    Stripper diameter                         ft      3.64
                    Rectifier wall thickness                  in     0.312
                    Stripper wall thickness                   in     0.312
                    Rectifier weight                          lb  6.45e+03
                    Stripper weight                           lb  7.93e+03
Purchase cost       Rectifier trays                          USD  1.52e+04
                    Stripper trays                           USD  2.01e+04
                    Rectifier tower                          USD  4.76e+04
                    Stripper platform and ladders            USD  1.42e+04
                    Stripper tower                           USD  5.38e+04
                    Rectifier platform and ladders           USD  1.81e+04
                    Condenser - Floating head                USD  4.07e+04
                    Reflux drum - Horizontal pressur...      USD  1.03e+04
                    Reflux drum - Platform and ladders       USD  3.02e+03
                    Pump - Pump                              USD  4.37e+03
                    Pump - Motor                             USD       379
                    Reboiler - Floating head                 USD  2.98e+04
Total purchase cost                                          USD  2.57e+05
Utility cost                                              USD/hr      84.9
class MESHDistillation(ID='', ins=None, outs=(), thermo=None, stages=None, **kwargs)[source]#

Create a distillation column that rigorously converges MESH (Mass, Equilibrium, Summation, and Enthalpy) equations.

Parameters:
  • ins – Inlet fluids to be mixed into the feed stage.

  • outs

    • [0] Distillate

    • [1] Bottoms product

    • […] Vapor side draws

    • […] Liquid side draws

  • LHK (tuple[str]) – IDs of light and heavy keys. The stage efficiency is estimated based on the relative volatility of the light and heavy keys.

  • boilup (float) – Vapor to liquid flow rate at the reboiler.

  • reflux (float) – Liquid to vapor flow rate at the condenser.

  • N_stages (int) – Number of stages.

  • feed_stages (tuple[int]) – Stage at which each inlet enters, respectively

  • vapor_side_draws (tuple[tuple[int]]) – Stage number and split fraction pairs.

  • liquid_side_draws (tuple[tuple[int]]) – Stage number and split fraction pairs.

  • P=101325 (float) – Operating pressure [Pa].

  • vessel_material (str, optional) – Vessel construction material. Defaults to ‘Carbon steel’.

  • tray_material (str, optional) – Tray construction material. Defaults to ‘Carbon steel’.

  • tray_type='Sieve' ('Sieve', 'Valve', or 'Bubble cap') – Tray type.

  • tray_spacing=450 (float) – Typically between 152 to 915 mm.

  • stage_efficiency=None – User enforced stage efficiency. If None, stage efficiency is calculated by the O’Connell correlation [2].

  • velocity_fraction=0.8 (float) – Fraction of actual velocity to maximum velocity allowable before flooding.

  • foaming_factor=1.0 (float) – Must be between 0 to 1.

  • open_tray_area_fraction=0.1 (float) – Fraction of open area to active area of a tray.

  • downcomer_area_fraction=None (float) – Enforced fraction of downcomer area to net (total) area of a tray. If None, estimate ratio based on Oliver’s estimation [1].

  • is_divided=False (bool) – True if the stripper and rectifier are two separate columns.

Examples

Simulate distillation column with 5 stages, a 0.673 reflux ratio, 2.57 boilup ratio, and feed at stage 2:

>>> import biosteam as bst
>>> bst.settings.set_thermo(['Water', 'Ethanol'], cache=True)
>>> feed = bst.Stream('feed', Ethanol=80, Water=100, T=80.215 + 273.15)
>>> D1 = bst.MESHDistillation(None, N_stages=5, ins=[feed], feed_stages=[2],
...     outs=['vapor', 'liquid'],
...     reflux=0.673, boilup=2.57,
...     LHK=('Ethanol', 'Water'),
... )
>>> D1.simulate()
>>> vapor, liquid = D1.outs
>>> vapor.imol['Ethanol'] / feed.imol['Ethanol']
0.96
>>> vapor.imol['Ethanol'] / vapor.F_mol
0.69
>>> D1.results()
Distillation                                               Units
Electricity         Power                                     kW     0.574
                    Cost                                  USD/hr    0.0449
Cooling water       Duty                                   kJ/hr -2.98e+06
                    Flow                                 kmol/hr  2.03e+03
                    Cost                                  USD/hr     0.992
Low pressure steam  Duty                                   kJ/hr   7.8e+06
                    Flow                                 kmol/hr       202
                    Cost                                  USD/hr        48
Design              Theoretical stages                                   5
                    Actual stages                                        7
                    Height                                    ft      24.3
                    Diameter                                  ft      3.32
                    Wall thickness                            in     0.312
                    Weight                                    lb  3.63e+03
Purchase cost       Trays                                    USD  8.11e+03
                    Tower                                    USD  3.43e+04
                    Platform and ladders                     USD  9.43e+03
                    Condenser - Floating head                USD  2.36e+04
                    Reflux drum - Vertical pressure ...      USD  1.29e+04
                    Reflux drum - Platform and ladders       USD  3.89e+03
                    Pump - Pump                              USD  4.35e+03
                    Pump - Motor                             USD       358
                    Reboiler - Floating head                 USD  2.34e+04
Total purchase cost                                          USD   1.2e+05
Utility cost                                              USD/hr        49

Simulate distillation column with a full condenser, 5 stages, a 0.673 reflux ratio, 2.57 boilup ratio, and feed at stage 2:

>>> import biosteam as bst
>>> bst.settings.set_thermo(['Water', 'Ethanol'], cache=True)
>>> feed = bst.Stream('feed', Ethanol=80, Water=100, T=80.215 + 273.15)
>>> D1 = bst.MESHDistillation(None, N_stages=5, ins=[feed], feed_stages=[2],
...     outs=['vapor', 'liquid', 'distillate'],
...     reflux=0.673, boilup=2.57,
...     LHK=('Ethanol', 'Water'),
...     full_condenser=True,
... )
>>> D1.simulate()
>>> vapor, liquid, distillate = D1.outs
>>> distillate.imol['Ethanol'] / feed.imol['Ethanol']
0.81
>>> distillate.imol['Ethanol'] / distillate.F_mol
0.70
>>> D1.results()
Distillation                                     Units
Electricity         Power                           kW     0.918
                    Cost                        USD/hr    0.0718
Cooling water       Duty                         kJ/hr -9.13e+06
                    Flow                       kmol/hr  6.24e+03
                    Cost                        USD/hr      3.04
Low pressure steam  Duty                         kJ/hr  9.63e+06
                    Flow                       kmol/hr       249
                    Cost                        USD/hr      59.2
Design              Theoretical stages                         5
                    Actual stages                              6
                    Height                          ft      22.9
                    Diameter                        ft      3.82
                    Wall thickness                  in     0.312
                    Weight                          lb     4e+03
Purchase cost       Trays                          USD  7.58e+03
                    Tower                          USD  3.62e+04
                    Platform and ladders           USD   9.8e+03
                    Condenser - Floating head      USD   3.5e+04
                    Pump - Pump                    USD  4.33e+03
                    Pump - Motor                   USD       390
                    Reboiler - Floating head       USD  2.41e+04
Total purchase cost                                USD  1.17e+05
Utility cost                                    USD/hr      62.3

Notes

The convergence algorithm decouples the equilibrium relationships, mass balances, and energy balances using a custom version of the Wang-Henke bubble point method. This algorithm is authored by Yoel Cortes-Pena, but is not yet peer reviewed. The main difference is that the tridiagonal matrix of mass balances across stages is used to solve for flow rates instead of mass fractions.

The initialization algorithm first converges a “collapsed” column without adiabatic stages which have no feeds or side draws. This collapsed column is initialized by solving for liquid and vapor flow rates assuming no phase change across adiabatic stages and unity partition coefficients at reboilers/condensers (in which case the stripping factor is equal to the boil-up ratio). Then, top and bottom stage temperatures are assumed to be the bubble point and dew point of the fed mixture and the temperature across stages are linearly interpolated. The partition coefficients in all stages are assumed to be equal to the feed bubble point.

The Murphree efficiency (i.e. stage efficiency) is based on the modified O’Connell correlation [2]. The diameter is based on tray separation and flooding velocity [1] [3]. Purchase costs are based on correlations compiled by Warren et. al. [4].

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

Create an adsorption or stripping column without a reboiler/condenser. The diameter is based on tray separation and flooding velocity. Purchase costs are based on correlations compiled by Warren et. al.

Parameters:
  • ins

    • [0] Liquid

    • [1] Vapor

  • outs

    • [0] Vapor

    • [1] Liquid

  • P (float) – Operating pressure [Pa].

  • vessel_material (str, optional) – Vessel construction material. Defaults to ‘Carbon steel’.

  • tray_material (str, optional) – Tray construction material. Defaults to ‘Carbon steel’.

  • tray_type='Sieve' ('Sieve', 'Valve', or 'Bubble cap') – Tray type.

  • tray_spacing=450 (float) – Typically between 152 to 915 mm.

  • stage_efficiency=None – User enforced stage efficiency. If None, stage efficiency is calculated by the O’Connell correlation [2].

  • velocity_fraction=0.8 (float) – Fraction of actual velocity to maximum velocity allowable before flooding.

  • foaming_factor=1.0 (float) – Must be between 0 to 1.

  • open_tray_area_fraction=0.1 (float) – Fraction of open area to active area of a tray.

  • downcomer_area_fraction=None (float) – Enforced fraction of downcomer area to net (total) area of a tray. If None, estimate ratio based on Oliver’s estimation [1].

Examples

>>> import biosteam as bst
>>> bst.settings.set_thermo(['AceticAcid', 'EthylAcetate', 'Water', 'MTBE'], cache=True)
>>> feed = bst.Stream('feed', Water=75, AceticAcid=5, MTBE=20, T=320)
>>> steam = bst.Stream('steam', Water=100, phase='g', T=390)
>>> absorber = bst.Absorber(None,
...     N_stages=2, ins=[feed, steam],
...     solute="AceticAcid", outs=['vapor', 'liquid']
... )
>>> absorber.simulate()
>>> absorber.show()
AdiabaticMultiStageVLEColumn
ins...
[0] feed
    phase: 'l', T: 320 K, P: 101325 Pa
    flow (kmol/hr): AceticAcid  5
                    Water       75
                    MTBE        20
[1] steam
    phase: 'g', T: 390 K, P: 101325 Pa
    flow (kmol/hr): Water  100
outs...
[0] vapor
    phase: 'g', T: 366.33 K, P: 101325 Pa
    flow (kmol/hr): AceticAcid  3.71
                    Water       73.8
                    MTBE        20
[1] liquid
    phase: 'l', T: 372.87 K, P: 101325 Pa
    flow (kmol/hr): AceticAcid  1.29
                    Water       101
                    MTBE        0.00031
>>> absorber.results()
Absorber                                   Units
Design              Theoretical stages                  2
                    Actual stages                       4
                    Height                    ft     19.9
                    Diameter                  ft        3
                    Wall thickness            in    0.312
                    Weight                    lb 2.71e+03
Purchase cost       Trays                    USD 5.59e+03
                    Tower                    USD 2.91e+04
                    Platform and ladders     USD 7.52e+03
Total purchase cost                          USD 4.23e+04
Utility cost                              USD/hr        0

References