High rate wastewater treatment#

Unit construction and functions for creating a high-rate wastewater treatment system as described in Li et al., with some unit operations based on Humbird et al., and Davis et al.

Systems#

create_high_rate_wastewater_treatment_system(ID=None, ins=None, outs=None, mockup=False, area=None, udct=None, operating_hours=None, autorename=None, *, process_ID='6', flowsheet=None, autopopulate=False, skip_IC=False, IC_kwargs={}, skip_AnMBR=False, AnMBR_kwargs={}, skip_AeF=False, AeF_kwargs={})#

Return a system for wastewater treatment (WWT) as described in Li et al. [1] The system includes internal circulation (IC), anaerobic membrane bioreactors (AnMBR), aerobic polishing filter (AeF), belt thickener and sludge centrifuge, and a reverse osmosis unit.

Users can choose whether to skip IC (makes sense when influent COD is only on the order of grams per liter), AnMBR (not recommended unless the COD is very low), and/or AeF (not recommended if want to achieve low COD in the effluent).

An optional biogas upgrading unit can be included to upgrade the biogas (from IC and AnMBR) as renewable natural gas (RNG) for sale with incentives, this is achieved through adjusting BiogasUpgrading.ratio.

Parameters:
  • ins (Stream], optional) – Wastewater streams (without solids). Defaults to all product streams at run time that are not sold and cannot generate energy through combustion (i.e. streams that have no sink, no price, and a LHV less that 1 kJ / g).

  • outs (Stream], optional) –

    • [0] RNG

    • [1] biogas

    • [2] sludge

    • [3] RO_treated_water

    • [4] brine

  • process_ID (float) – Number of the process. E.g., the default process_ID is 6, then the first mixer of this WWT system will be M601.

  • flowsheet (Flowsheet, optional) – If provided, the WWT system will be added to the given flowsheet.

  • autopopulate (bool, optional) – Whether to automatically add wastewater streams.

  • skip_IC (bool) – Whether to skip the IC unit.

  • IC_kwargs (dict) – kwargs to be passed to the IC unit (refer to the doc of the IC unit for details).

  • skip_AnMBR (bool) – Whether to skip the AnMBR unit.

  • AnMBR_kwargs (dict) – kwargs to be passed to the AnMBR unit (refer to the doc of the AnMBR unit for details).

  • skip_AeF (bool) – Whether to skip the AeF unit.

  • AeF_kwargs (dict) – kwargs to be passed to the AeF unit (refer to the doc of the AeF unit for details).

Examples

>>> from biosteam import Stream, create_high_rate_wastewater_treatment_system, settings
>>> from biorefineries import cornstover as cs
>>> settings.set_thermo(cs.create_chemicals())
>>> feed = Stream(
...     ID='wastewater',
...     Water=2.634e+04,
...     Ethanol=0.07225,
...     AceticAcid=24.67,
...     Furfural=6.206,
...     Glycerol=1.784,
...     LacticAcid=17.7,
...     SuccinicAcid=3.472,
...     DAP=1.001,
...     AmmoniumSulfate=17.63,
...     HMF=2.366,
...     Glucose=2.816,
...     Xylose=6.953,
...     Arabinose=12.78,
...     Extract=65.98,
...     Ash=83.52,
...     Lignin=1.659,
...     SolubleLignin=4.202,
...     GlucoseOligomer=6.796,
...     GalactoseOligomer=0.01718,
...     MannoseOligomer=0.009008,
...     XyloseOligomer=2.878,
...     ArabinoseOligomer=0.3508,
...     Z_mobilis=0.6668,
...     Protein=2.569,
...     Glucan=0.1555,
...     Xylan=0.06121,
...     Xylitol=4.88,
...     Cellobiose=0.9419,
...     Arabinan=0.02242,
...     Mannan=0.06448,
...     Galactan=0.01504,
...     Cellulase=25.4,
...     units='kmol/hr'
... )
>>> wwt_sys = create_high_rate_wastewater_treatment_system(ins=feed)
>>> wwt_sys.simulate()
>>> wwt_sys.show('cwt100')
System: wastewater_sys
Highest convergence error among components in recycle
stream M603-0 after 6 loops:
- flow rate   1.77e+01 kmol/hr (0.073%)
- temperature 1.30e-03 K (0.00043%)
ins...
[0] wastewater
    phase: 'l', T: 298.15 K, P: 101325 Pa
    composition (%): Water              94.6
                     Ethanol            0.000664
                     AceticAcid         0.295
                     Furfural           0.119
                     Glycerol           0.0328
                     LacticAcid         0.318
                     SuccinicAcid       0.0818
                     DAP                0.0264
                     AmmoniumSulfate    0.465
                     HMF                0.0595
                     Glucose            0.101
                     Xylose             0.208
                     Arabinose          0.383
                     Extract            2.37
                     Ash                0.0167
                     Lignin             0.0503
                     SolubleLignin      0.128
                     GlucoseOligomer    0.244
                     GalactoseOligomer  0.000617
                     MannoseOligomer    0.000324
                     XyloseOligomer     0.0862
                     ArabinoseOligomer  0.0105
                     Z_mobilis          0.00328
                     Protein            0.0117
                     Glucan             0.00503
                     Xylan              0.00161
                     Xylitol            0.148
                     Cellobiose         0.0643
                     Arabinan           0.000591
                     Mannan             0.00209
                     Galactan           0.000486
                     Cellulase          0.122
                     -----------------  5.01e+05 kg/hr
outs...
[0] RNG
    phase: 'l', T: 298.15 K, P: 101325 Pa
    flow: 0
[1] biogas
    phase: 'l', T: 298.15 K, P: 101325 Pa
    composition (%): CH4  26.9
                     H2S  0.0348
                     CO2  73.1
                     ---  4.33e+04 kg/hr
[2] sludge
    phase: 'l', T: 307.84 K, P: 101325 Pa
    composition (%): Water              80
                     Ethanol            2.49e-05
                     AceticAcid         0.0111
                     Furfural           0.00446
                     Glycerol           0.00123
                     NH3                0.0447
                     LacticAcid         0.0117
                     SuccinicAcid       0.00307
                     DAP                0.0635
                     AmmoniumSulfate    1.12
                     HMF                0.00223
                     Glucose            0.0043
                     Xylose             0.00678
                     Arabinose          0.0144
                     Extract            0.087
                     Ash                0.852
                     Lignin             2.51
                     SolubleLignin      0.00468
                     GlucoseOligomer    0.00899
                     GalactoseOligomer  2.27e-05
                     MannoseOligomer    1.19e-05
                     XyloseOligomer     0.00317
                     ArabinoseOligomer  0.000387
                     Z_mobilis          0.163
                     Protein            0.583
                     Glucan             0.25
                     Xylan              0.0803
                     Xylitol            0.00555
                     Cellobiose         0.00241
                     Arabinan           0.0294
                     Mannan             0.104
                     Galactan           0.0242
                     WWTsludge          14
                     Cellulase          0.00447
                     -----------------  1.01e+04 kg/hr
[3] RO_treated_water
    phase: 'l', T: 303.15 K, P: 101325 Pa
    composition (%): Water  100
                     -----  4.59e+05 kg/hr
[4] brine
    phase: 'l', T: 303.15 K, P: 101325 Pa
    composition (%): Water              71.2
                     Ethanol            2.18e-05
                     AceticAcid         0.00971
                     Furfural           0.00391
                     Glycerol           0.00108
                     NH3                1.08
                     LacticAcid         0.0121
                     SuccinicAcid       0.00269
                     DAP                1.48
                     AmmoniumSulfate    26.1
                     HMF                0.00195
                     Xylose             0.0133
                     Arabinose          0.0126
                     Extract            0.09
                     SolubleLignin      0.00484
                     GlucoseOligomer    0.00914
                     GalactoseOligomer  2.31e-05
                     MannoseOligomer    1.21e-05
                     XyloseOligomer     0.00322
                     ArabinoseOligomer  0.000393
                     Xylitol            0.00486
                     Cellobiose         0.00211
                     Cellulase          0.00462
                     -----------------  8.51e+03 kg/hr

Unit operations#

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

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 [4] (assuming steady state and pseudo-zeroth-order kinetics), where two methods are used based on Irizar et al. [7] and Tchobanoglous et al. [8].

Parameters:
  • ins (Stream], optional) – Influent.

  • outs (Stream], optional) –

    • [0] biogas

    • [1] effluent

    • [2] waste sludge

  • method (str) –

    • “separate” to design the bottom and top reactors separately as in [7].

    Design parameters for this methid include OLRall, biodegradability, Y, q_Qw, mu_max, b, Fxt, and Fxb.

    • ”lumped” to design the entire IC reactor as a black box following [8].

    Design parameters for this method include OLRall, biodegradability, Y, q_Qw, and q_Xw.

  • 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 chemicals, when shown as a float, all biodegradable chemicals 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 [4], 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).

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

Anaerobic membrane bioreactor (AnMBR) for wastewater treatment as in Shoener et al. [6] Some assumptions adopted from Humbird et al. [2]

In addition to the anaerobic treatment, an optional second stage can be added, which can be aerobic filter or granular activated carbon (GAC).

Parameters:
  • ins (Stream], optional) –

    • [0] influent

    • [1] recycle (optional)

    • [2] NaOCl

    • [3] citric acid

    • [4] bisulfite

    • [5] air (optional)

  • outs (Stream], optional) –

    • [0] biogas

    • [1] effluent

    • [2] waste sludge

    • [3] air (optional)

  • reactor_type (str) – Can either be “CSTR” for continuous stirred tank reactor or “AF” for anaerobic filter.

  • membrane_configuration (str) – Can either be “cross-flow” or “submerged”.

  • membrane_type (str) – Can be “hollow fiber” (“submerged” configuration only), “flat sheet” (either “cross-flow” or “submerged” configuration), or “multi-tube” (“cross-flow” configuration only).

  • membrane_material (str) – Can be any of the plastics (“PES”, “PVDF”, “PET”, “PTFE”) for any of the membrane types (“hollow fiber”, “flat sheet”, “multi-tube”), or “sintered steel” for “flat sheet”, or “ceramic” for “multi-tube”.

  • membrane_unit_cost (float) – Cost of membrane, [$/ft2]

  • include_aerobic_filter (bool) – Whether to include an aerobic filtration process in this AnMBR, can only be True in “AF” (not “CSTR”) reactor.

  • add_GAC (bool) – If to add granular activated carbon to enhance biomass retention, can only be True for the “submerged” configuration.

  • include_degassing_membrane (bool) – If to include a degassing membrane to enhance methane (generated through the digestion reaction) recovery.

  • 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 chemicals, when shown as a float, all biodegradable chemicals are assume to have the same degradability.

  • split (dict) – Component-wise split to the treated water. E.g., {‘Water’:1, ‘WWTsludge’:0} indicates all of the water goes to the treated water and all of the WWTsludge goes to the wasted sludge. Default splits (based on the membrane bioreactor in [2]) will be used if not provided.

  • sludge_conc (float) – Concentration of biomass in the waste sludge stream, in g/L. Note that the solids content of the effluent should be smaller than the solids content of the waste sludge stream.

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

  • include_pump_building_cost (bool) – Whether to include the construction cost of pump building.

  • include_excavation_cost (bool) – Whether to include the construction cost of excavation.

  • kwargs (dict) – Other keyword arguments (e.g., J_max, SGD).

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

A superclass for anaerobic and aerobic polishing as in Shoener et al. [6] Some assumptions adopted from Humbird et al. [2]

Parameters:
  • ins (Stream], optional) –

    • [0] influent

    • [1] recycle

    • [2] air (optional & when aerobic).

  • outs (Stream], optional) –

    • [0] biogas (when anaerobic)

    • [1] effluent

    • [2] waste sludge

    • [3] air (optional & when aerobic).

  • filter_type (str) – Can either be “anaerobic” or “aerobic”.

  • OLR (float) – Organic loading rate of influent, [kg COD/m3/hr].

  • HLR (float) – Hydraulic loading rate of influent, [m3/m2/hr].

  • X_decomp (float) – Fraction of the influent COD converted to biogas (filter_type == “anaerobic”) or CO2 (filter_type == “aerobic”).

  • X_growth (float) – Fraction of the influent COD converted to biomass growth.

  • split (dict) – Component-wise split to the treated water. E.g., {‘Water’:1, ‘WWTsludge’:0} indicates all of the water goes to the treated water and all of the WWTsludge goes to the wasted sludge. Default splits (based on the membrane bioreactor in [2]) will be used if not provided.

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

  • include_degassing_membrane (bool) – If to include a degassing membrane to enhance methane (generated through the digestion reaction) recovery. No degassing membrane will be added if filter_type is “aerobic”.

  • include_pump_building_cost (bool) – Whether to include the construction cost of pump building.

  • include_excavation_cost (bool) – Whether to include the construction cost of excavation.

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

Gravity belt thickener (GBT) designed based on the manufacture specification data sheet. [9]

Key parameters include:

  • Capacity: 80-100 m3/h.

  • Influent solids concentration: 0.2-1%.

  • Sludge cake moisture content: 90-96%.

  • Motor power: 3 (driving motor) and 1.1 (agitator motor) kW.

  • Belt width: 2.5 m.

  • Weight: 2350 kg.

  • Quote price: $3680 ea for three or more sets.

The bare module (installation) factor is from Table 25 in Humbird et al. [2] (solids handling equipment).

Parameters:
  • ins (Stream], optional) – Influent

  • outs (Stream], optional) –

    • [0] water-rich supernatant

    • [1] solid-rich sludge

  • sludge_moisture (float) – Moisture content of the thickened sludge, [wt% water].

  • solubles (tuple) – IDs of the soluble chemicals. Note that all chemicals that are not included in this tuple and not locked as gas phase (i.e., chemical.locked_state!=’g’) will be treated as solids in simulation.

  • max_capacity (float) – Maximum hydraulic loading per belt thickener, [m3/h].

  • power_demand (float) – Total power demand of each belt thickener, [kW].

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

Solid centrifuge for sludge dewatering.

The simulation (_run() method) and costing (_cost() method) are based on SludgeHandling and the sizing (_design() method) is based on SolidsCentrifuge.

Parameters:
  • ins (Stream], optional) – Influent

  • outs (Stream], optional) –

    • [0] water-rich supernatant

    • [1] solid-rich sludge

  • sludge_moisture (float) – Moisture content of the thickened sludge, [wt% water].

  • solubles (tuple) – IDs of the soluble chemicals. Note that all chemicals that are not included in this tuple and not locked as gas phase (i.e., chemical.locked_state!=’g’) will be treated as solids in simulation.

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

Upgrade the biogas to renewable natural gas (RNG). Note that the second influent is a dummy stream to calculate the upgrading cost.

Parameters:
  • ratio (float) – How much of the incoming biogas will be upgraded to RNG.

  • loss (float) – CH4 loss during upgrading.

  • unit_upgrading_cost (float) – Unit cost for upgrading, in $/MMBtu.

  • unit_upgrading_GWP (float) – Unit 100-yr global warming potential (GWP) for biogas upgrading, in kg CO2/MMBtu.

References

Yang et al., Cost and Life-Cycle Greenhouse Gas Implications of Integrating Biogas Upgrading and Carbon Capture Technologies in Cellulosic Biorefineries. Environ. Sci. Technol. 2020. https://doi.org/10.1021/acs.est.0c02816.

IEA. Outlook for Biogas and Biomethane: Prospects for Organic Growth; IEA: Paris, 2020. https://www.iea.org/reports/outlook-for-biogas-and-biomethane-prospects-for-organic-growth

Rai et al., Comparative Life Cycle Evaluation of the Global Warming Potential (GWP) Impacts of Renewable Natural Gas Production Pathways. Environ. Sci. Technol. 2022. https://doi.org/10.1021/acs.est.2c00093.

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

Used to estimate the cost of producing electricity as in [6].

Parameters:
  • eff (float) – Combined efficiency for combustion and power generation.

  • unit_CAPEX (float) – Capital cost of the CHP per kW of power generated, $/kW.

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

Copy ins[main_in] as ins[main_out]. Can be also used to calculate the cost of wastewater treatment by clearing all WWT-related units and streams.

Parameters:
  • main_in (int) – Which influent will be copied to main_out.

  • main_out (int) – Which effluent will be copied from main_in.

  • wwt_units (Iterable) – Collection of units whose costs will be cleared when clear_wwt is True. ins and outs of the units will be emptied if its price isn’t 0.

  • wwt_streams (Iterable) – Collection of streams which will be emptied when clear_wwt is True. Usually should at least includes the biogas and sludge stream.

  • clear_wwt (bool) – Whether to clear the costs of and select streams associated with wwt_units.

References