Internal Circulation Reactor#

class qsdsan.sanunits.InternalCirculationRx(ID='', ins: Sequence[Stream] | None = None, outs: Sequence[Stream] | None = (), thermo=None, *, method='lumped', biomass_ID='WWTsludge', OLRall=1.25, Y_biogas=0.86, Y_biomass=0.05, biodegradability=1.0, vessel_type='IC', vessel_material='Stainless steel', V_wf=0.8, kW_per_m3=0.0, T=308.15, init_with='WasteStream', **kwargs)#

Internal circulation (IC) reactor for anaerobic digestion (AD), including a high-rate bottom reactor for rapid organic removal and a low-rate top reactor for polishing. Both reactors are similar to upflow anaerobic blanket reactor (UASB).

Design of the reactor follows steps described in [1] (assuming steady state and pseudo-zeroth-order kinetics), where two methods are used based on Irizar et al.[2]_ and Tchobanoglous et al.[3]_.

Parameters:
  • ins (Inlets(obj)) – Influent.

  • outs (Outlets(obj)) – Biogas, effluent, waste sludge.

  • method (str) –

    Either “separate” to design the bottom and top reactors separately as in [2] , or “lumped” to design the entire IC reactor as a black box following [3] .

    In “separate” method, design parameters include:
    • OLRall, biodegradability, Y, q_Qw, mu_max, b, Fxt, and Fxb

    In “lumped” method, design parameters include:
    • OLRall, biodegradability, Y, q_Qw, and q_Xw

  • biomass_ID (str) – ID of the Component that represents the biomass.

  • OLRall (float) – Overall organic loading rate, [kg COD/m3/hr].

  • Y_biogas (float) – Biogas yield, [kg biogas/kg consumed COD].

  • Y_biomass (float) – Biomass yield, [kg biomass/kg consumed COD].

  • biodegradability (float or dict) – Biodegradability of components, when shown as a float, all biodegradable components are assumed to have the same degradability.

  • q_Qw (float) – Ratio between the bottom reactor waste flow and the influent.

  • q_Xw (float) – Ratio between the biomass concentration in the reactor and the waste flow.

  • mu_max (float) – Maximum specific growth rate, [/hr].

  • b (float) – Specific endogenous decay coefficient, [/hr].

  • V_wf (float) – Fraction of working volume over total volume.

  • vessel_type (str) – Can be “IC” to use the reactor size constraints according to [1], or “Conventional” based on biosteam.MixTank (much smaller tank size, not recommended).

  • vessel_material (str) – Vessel material.

  • kW_per_m3 (float) – Electricity requirement per unit volume, [kW/m^3]. Default to 0 as IC reactors realizes mixing through internal circulation caused by the rising force of the generated biogas.

  • T (float) – Temperature of the reactor. Will not control temperature if provided as None.

  • kwargs (dict) – Other keyword arguments (e.g., Fxb, Fxt).

References

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_M: dict[str, float]#

All material 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.

property Fxb#

[float] Biomass transfer ratio from the bottom reactor to the top reactor, should be within [0, 1] (ideal to no retention), only relevant when the “separate” method is used.

property Fxt#

[float] Biomass transfer ratio from the top reactor to the effluent, should be within [0, 1] (ideal to no retention), only relevant when the “separate” method is used.

property HRT#

[float] Hydraulic retention time [hr].

property OLRall#

[float] Overall organic loading rate, [kg COD/m3/hr].

property Qe#

[float] Effluent volumetric flow rate, [m3/hr].

property Qi#

[float] Influent volumetric flow rate, [m3/hr].

property Qw#

[float] Waste flow volumetric flow rate, [m3/hr].

property SRT#

[float] Solid residence time [hr].

property Se#

[float] Effluent substrate (i.e., biodegradable components) concentration, [kg/m3].

property Si#

[float] Influent substrate (i.e., biodegradable components) concentration, [kg/m3].

property Sw#

[float] Waste flow substrate (i.e., biodegradable components) concentration, [kg/m3].

property Vb#

[float] Volume of the bottom reactor, [m3], only relevant when the “separate” method is used.

property Vliq#

[float] Total volume of the liquid, not considering gas headspace and V_wf, [m3].

property Vt#

[float] Volume of the top reactor, [m3], only relevant when the “separate” method is used.

property Vtot#

[float] Total volume considering V_wf, [m3].

property Xe#

[float] Effluent biomass (i.e., WWTsludge) concentration, [kg/m3].

property Xi#

[float] Influent biomass (i.e., WWTsludge) concentration, [kg/m3].

property Xw#

[float] Waste flow biomass (i.e., WWTsludge) concentration, [kg/m3].

auxiliary_unit_names: tuple[str, ...] = ('heat_exchanger', 'effluent_pump', 'sludge_pump')#

class-attribute Name of attributes that are auxiliary units. These units will be accounted for in the purchase and installed equipment costs without having to add these costs in the baseline_purchase_costs dictionary. Heat and power utilities are also automatically accounted for.

property b#

[float] Specific endogenous decay coefficient, [/hr], only relevant when the “separate” method is used.

baseline_purchase_costs: dict[str, float]#

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

property biodegradability#

[float of dict] Biodegradability of components, when shown as a float, all biodegradable components are assumed to have the same degradability.

property biogas_rxns#

[tmo.ParallelReaction] Biogas production reactions.

property biomass_ID#

[str] ID of the Component that represents the biomass.

property decay_rxn#

[tmo.Reaction] Biomass endogenous decay.

Note

Conversion is adjusted in the _run function.

design_results: dict[str, object]#

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

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.

property growth_rxns#

[tmo.ParallelReaction] Biomass (WWTsludge) growth reactions.

heat_utilities: tuple[HeatUtility, ...]#

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

property i_rm#

[np.array] Removal of each component in this reactor.

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.

line: str = 'Internal circulation rx'#

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

property method#

[str] Design method, can be “separate” or “lumped”.

property mu_max#

[float] Maximum specific growth rate, [/hr], only relevant when the “separate” method is used.

property organic_rm#

[float] Overall organic (COD) removal rate.

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.

power_utility: PowerUtility#

Electric utility associated to unit (including auxiliary requirements).

prioritize: bool#

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

purchase_cost_algorithms = {'Conventional': TankPurchaseCostAlgorithm(f_Cp=ExponentialFunctor(A=12080, n=0.525), V_min=0.1, V_max=30, CE=525.4, material=Stainless steel, V_units=m^3), 'IC': TankPurchaseCostAlgorithm(f_Cp=ExponentialFunctor(A=12080, n=0.525), V_min=28.274333882308138, V_max=2827.4333882308138, CE=525.4, material=Stainless steel, V_units=m^3)}#

VesselPurchaseCostAlgorithm] All cost algorithms available for vessel types.

Type:

dict[str

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.

property q_Qw#

[float] Ratio between the bottom reactor waste flow and the influent.

property q_Xw#

[float] Ratio between the biomass concentration in the reactor and the waste flow, only relevant when the “lumped” method is used.

responses: set[bst.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.

run_after_specifications: bool#

Whether to run mass and energy balance after calling specification functions

property tau#

[float] Reactor residence time, [hr] (same as the hydraulic retention time, HRT).