abstract_stirred_tank_reactor#

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

The reactor is designed as a pressure vessel with a given aspect ratio and residence time. A pump-heat exchanger recirculation loop can be used to satisfy the duty, if any. By default, a turbine agitator is also included if the power usage, kW_per_m3, is positive. A vacuum system is also automatically added if the operating pressure is at a vacuum.

Parameters:
  • tau – Residence time [hr].

  • T – Operating temperature [K].

  • P – Operating pressure [Pa].

  • V_wf – Fraction of working volume over total volume. Defaults to 0.8.

  • V_max – Maximum volume of a reactor [m3]. Defaults to 355.

  • length_to_diameter – Length to diameter ratio of bioreactor.

  • kW_per_m3 – Power usage of agitator. Defaults to 0.985 [kW / m3] converted from 5 hp/1000 gal as in [1], for liquid–liquid reaction or extraction.

  • vessel_material – Vessel material. Defaults to ‘Stainless steel 316’.

  • vessel_type – Vessel type. Valid options are ‘Horizontal’ or ‘Vertical’. Defaults to ‘Vertical’

  • batch – Whether to use batch operation mode. If False, operation mode is continuous. Defaults to continuous.

  • tau_0 – Cleaning and unloading time (if batch mode). Defaults to 3 hr.

  • N – Number of reactors.

  • heat_exchanger_configuration – What kind of heat exchanger to default to (if any). Valid options include ‘jacketed’, ‘recirculation loop’, and ‘internal’. Defaults to ‘recirculation loop’.

  • dT_hx_loop – Maximum change in temperature for the heat exchanger loop. Defaults to 5 K.

  • jacket_annular_diameter – Annular diameter of heat exchanger jacket to vessel [m]. Defaults to 0.1 m.

  • loading_time – Loading time of batch reactor. If not given, it will assume each vessel is constantly being filled.

  • N_vessels – Number of vessels.

Notes

The heat exchanger configuration can be one of the following:

  • ‘recirculation loop’:

    The recirculation loop takes into account the required flow rate needed to reach the maximum temperature change of the heat exchanger, dT_hx_loop. Increasing dT_hx_loop decreases the required recirculation flow rate and therefore decreases pump costs.

    When parallel reactors are required, one recirculation loop (each with a pump and heat exchanger) is assumed. Although it is possible to use the same recirculation loop for all reactors, this conservative assumption allows for each reactor to be operated independently from each other.

  • ‘jacketed’:

    The jacket does not account for the heat transfer area requirement. It simply assumes that a full jacket can provide the necessary heat transfer area to meet the duty requirement. A heuristic annular diameter is assumed through jacket_annular_diameter (which can be adjusted by the user). The temperature at the wall is assumed to be the operating temperature. The weight of the jacket is added to the weight of the vessel and the cost is compounded together as a jacketed vessel.

  • ‘internal’:

    The internal is costed as an ordinary helical tube heat exchanger with the added assumption that the temperature at the wall is the operating temperature. This method is still not implemented in BioSTEAM yet.

Examples

Inherit from AbstractStirredTankReactor to create a new class that simulates the continuous fermentative production of ethanol from sugarcane juice:

>>> import biosteam as bst
>>> class ContinuousFermentation(bst.AbstractStirredTankReactor):
...     _N_ins = 1
...     _N_outs = 2
...     T_default = 32. + 273.15
...     P_default = 101325.
...     tau_default = 8.
...
...     def _run(self):
...         vent, effluent = self.outs
...         effluent.mix_from(self.ins, energy_balance=False)
...         self.reactions(effluent)
...         effluent.T = vent.T = self.T
...         effluent.P = vent.P = self.P
...         vent.phase = 'g'
...         vent.empty()
...         vent.receive_vent(effluent, energy_balance=False)
...
>>> from biorefineries.sugarcane import chemicals
>>> bst.settings.set_thermo(chemicals)
>>> feed = bst.Stream('feed',
...     Water=1.20e+05,
...     Glucose=1.89e+03,
...     Sucrose=2.14e+04,
...     DryYeast=1.03e+04,
...     units='kg/hr',
...     T=32+273.15
... )
>>> R1 = ContinuousFermentation('R1',
...     ins=feed, outs=('CO2', 'product'),
...     reactions = bst.ReactionSystem(
...         bst.Reaction('Sucrose + Water -> 2Glucose', 'Sucrose', 1.00),  # Hydrolysis
...         bst.Reaction('Glucose -> 2Ethanol + 2CO2',  'Glucose', 0.9),   # Production
...         bst.Reaction('Glucose -> Yeast', 'Glucose', 0.70, basis='wt'), # Growth
...         basis='mol',
...     )
... )
>>> R1.simulate()
>>> R1.show()
ContinuousFermentation: R1
ins...
[0] feed
    phase: 'l', T: 305.15 K, P: 101325 Pa
    flow (kmol/hr): Water    6.66e+03
                    Glucose  10.5
                    Sucrose  62.5
                    Yeast    456
outs...
[0] CO2
    phase: 'g', T: 305.15 K, P: 101325 Pa
    flow (kmol/hr): Water    9.95
                    Ethanol  3.71
                    CO2      244
[1] product
    phase: 'l', T: 305.15 K, P: 101325 Pa
    flow (kmol/hr): Water    6.59e+03
                    Ethanol  240
                    Glucose  4.07
                    Yeast    532
>>> R1.results()
Continuous fermentation                                         Units                   R1
Electricity              Power                                     kW             1.04e+03
                         Cost                                  USD/hr                 81.5
Chilled water            Duty                                   kJ/hr            -1.41e+07
                         Flow                                 kmol/hr             9.42e+03
                         Cost                                  USD/hr                 70.3
Design                   Reactor volume                            m3                  319
                         Number of reactors                                              4
                         Residence time                            hr                    8
                         Vessel type                                              Vertical
                         Length                                    ft                 50.5
                         Diameter                                  ft                 16.8
                         Weight                                    lb             5.39e+04
                         Wall thickness                            in                0.363
                         Vessel material                               Stainless steel 316
Purchase cost            Vertical pressure vessel (x4)            USD             1.18e+06
                         Platform and ladders (x4)                USD             2.12e+05
                         Heat exchanger - Floating head (x4)      USD             1.61e+05
                         Recirculation pump - Pump (x4)           USD              3.9e+04
                         Recirculation pump - Motor (x4)          USD             2.78e+03
                         Agitator - Agitator (x4)                 USD             4.53e+05
Total purchase cost                                               USD             2.05e+06
Installed equipment cost                                          USD             4.25e+06
Utility cost                                                   USD/hr                  152

References