Hydrothermal¶

QSDsan: Quantitative Sustainable Design for sanitation and resource recovery systems

This module is developed by:

This module is under the University of Illinois/NCSA Open Source License. Please refer to https://github.com/QSD-Group/QSDsan/blob/main/LICENSE.txt for license details.

class qsdsan.unit_operations.static._hydrothermal.CatalyticHydrothermalGasification(ID='', ins: Sequence[AbstractStream] | None = None, outs: Sequence[AbstractStream] | None = (), thermo=None, init_with='Stream', pump_pressure=21302739.972, heat_temp=623.15, cool_temp=333.15, WHSV=3.562, catalyst_lifetime=7920, gas_composition={'C2H6': 0.011, 'C3H8': 0.03, 'CH4': 0.527, 'CO2': 0.432, 'H2': 0.0001}, gas_C_2_total_C=0.5981, P=None, tau=0.3333333333333333, void_fraction=0.5, length_to_diameter=2, diameter=None, N=6, V=None, auxiliary=False, mixing_intensity=None, kW_per_m3=0, wall_thickness_factor=1, vessel_material='Stainless steel 316', vessel_type='Vertical', CAPEX_factor=1)¶

CHG serves to reduce the COD content in the aqueous phase and produce fuel gas under elevated temperature (350°C) and pressure. The outlet will be cooled down and separated by a flash unit.

Parameters:
  • ins (Iterable(stream)) – chg_in, catalyst_in.

  • outs (Iterable(stream)) – chg_out, catalyst_out.

  • pump_pressure (float) – CHG influent pressure, [Pa].

  • heat_temp (float) – CHG influent temperature, [K].

  • cool_temp (float) – CHG effluent temperature, [K].

  • WHSV (float) – Weight Hourly Space velocity, [kg feed/hr/kg catalyst].

  • catalyst_lifetime (float) – CHG catalyst lifetime, [hr].

  • gas_composition (dict) – CHG gas composition.

  • gas_C_2_total_C (dict) – CHG gas carbon content to feed carbon content.

  • CAPEX_factor (float) – Factor used to adjust CAPEX.

References

[1] Jones, S. B.; Zhu, Y.; Anderson, D. B.; Hallen, R. T.; Elliott, D. C.;

Schmidt, A. J.; Albrecht, K. O.; Hart, T. R.; Butcher, M. G.; Drennan, C.; Snowden-Swan, L. J.; Davis, R.; Kinchin, C. Process Design and Economics for the Conversion of Algal Biomass to Hydrocarbons: Whole Algae Hydrothermal Liquefaction and Upgrading; PNNL–23227, 1126336; 2014; https://doi.org/10.2172/1126336.

[2] Davis, R. E.; Grundl, N. J.; Tao, L.; Biddy, M. J.; Tan, E. C.;

Beckham, G. T.; Humbird, D.; Thompson, D. N.; Roni, M. S. Process Design and Economics for the Conversion of Lignocellulosic Biomass to Hydrocarbon Fuels and Coproducts: 2018 Biochemical Design Case Update; Biochemical Deconstruction and Conversion of Biomass to Fuels and Products via Integrated Biorefinery Pathways; NREL/TP–5100-71949, 1483234; 2018; p NREL/TP–5100-71949, 1483234. https://doi.org/10.2172/1483234.

[3] Elliott, D. C.; Neuenschwander, G. G.; Hart, T. R.; Rotness, L. J.;

Zacher, A. H.; Santosa, D. M.; Valkenburg, C.; Jones, S. B.; Rahardjo, S. A. T. Catalytic Hydrothermal Gasification of Lignin-Rich Biorefinery Residues and Algae Final Report. 87.

auxiliary_unit_names: tuple[str, ...] = ('pump', 'heat_ex_heating', 'heat_ex_cooling')¶

Auxiliary unit operation names.

line: str = 'Catalytic hydrothermal gasification'¶

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

run()¶

Run mass and energy balance. This method also runs specifications user defined specifications unless it is being run within a specification (to avoid infinite loops).

See also

_run, specifications, add_specification, add_bounded_numerical_specification

class qsdsan.unit_operations.static._hydrothermal.HydrothermalLiquefaction(ID='', ins: Sequence[AbstractStream] | None = None, outs: Sequence[AbstractStream] | None = (), thermo=None, init_with='WasteStream', include_construction=False, T=553.15, P=101325, dw_yields={'aqueous': 0, 'biocrude': 0, 'char': 1, 'gas': 0}, gas_composition={'HTLgas': 1}, aqueous_composition={'HTLaqueous': 1}, biocrude_composition={'HTLbiocrude': 1}, char_composition={'HTLchar': 1}, internal_heat_exchanging=True, eff_T=333.15, eff_P=206842.80000000002, use_decorated_cost=True, tau=0.25, V_wf=0.45, length_to_diameter=None, diameter=0.174625, N=4, V=None, auxiliary=False, mixing_intensity=None, kW_per_m3=0, wall_thickness_factor=1, vessel_material='Stainless steel 316', vessel_type='Horizontal', F_M={'Horizontal pressure vessel': 2.7, 'Vertical pressure vessel': 2.7})¶

HTL converts feedstock to gas, aqueous, biocrude, and (hydro)char under elevated temperature and pressure. Product yields and compositions are directly specified via dw_yields and the four *_composition dicts (no feedstock-composition correlation is modeled here — subclass this unit to add one, e.g. a sludge-biochemical-composition correlation).

Parameters:
  • ins (Iterable(stream)) – Feedstock into HTL.

  • outs (Iterable(stream)) – Gas, aqueous, biocrude, char.

  • T (float) – Temperature of the HTL reaction, [K].

  • P (float) – Pressure when the reaction is at temperature, [Pa].

  • dw_yields (dict) – Dry weight percentage yields of the four products (gas, aqueous, biocrude, char), normalized to 100% sum. Keys must be ‘gas’, ‘aqueous’, ‘biocrude’, and ‘char’.

  • gas_composition (dict) – Composition of the gaseous products including water, normalized to 100% sum.

  • aqueous_composition (dict) – Composition of the aqueous products excluding water, normalized to 100% sum. Water not allocated to other products all goes to aqueous.

  • biocrude_composition (dict) – Composition of the biocrude products including water, normalized to 100% sum.

  • char_composition (dict) – Composition of the char products including water, normalized to 100% sum.

  • internal_heat_exchanging (bool) – If True, use the product to preheat the feedstock.

  • eff_T (float) – HTL effluent temperature, [K]; if provided, an additional HX controls effluent temperature.

  • eff_P (float) – HTL effluent pressure, [Pa].

  • use_decorated_cost (bool) – If True, use cost scaled per [1]; otherwise use generic Reactor (PressureVessel) costing.

  • F_M (dict) – Material factors used to adjust cost (only used when use_decorated_cost is False).

Examples

>>> from qsdsan import Components, WasteStream, set_thermo
>>> from qsdsan.unit_operations import HydrothermalLiquefaction
>>> cmps = Components.load_default()
>>> set_thermo(cmps)
>>> feed = WasteStream('htl_feed', S_F=200, Water=800, units='kg/hr')
>>> HTL = HydrothermalLiquefaction(
...     'HTL', ins=feed, outs=('gas', 'aq', 'crude', 'char'),
...     dw_yields={'gas': 0.05, 'aqueous': 0.15, 'biocrude': 0.4, 'char': 0.4},
...     gas_composition={'S_CH4': 0.5, 'S_H2': 0.5},
...     aqueous_composition={'Water': 1},
...     biocrude_composition={'S_F': 0.5, 'Water': 0.5},
...     char_composition={'Water': 1},
...     T=280+273.15,
...     internal_heat_exchanging=False,
...     )
>>> HTL.simulate()
>>> gas, aq, crude, char = HTL.outs
>>> round(crude.imass['S_F'], 2)  # kg/hr
40.0
>>> sorted(type(u).__name__ for u in HTL.auxiliary_units)
['HXprocess', 'HXutility', 'HXutility']

See also

KnockOutDrum

Reactor

biosteam.units.design_tools.PressureVessel

saf systems

References

[1] Knorr, D.; Lukas, J.; Schoen, P. Production of Advanced Biofuels

via Liquefaction - Hydrothermal Liquefaction Reactor Design: April 5, 2013; NREL/SR-5100-60462, 1111191; 2013; p NREL/SR-5100-60462, 1111191. https://doi.org/10.2172/1111191.

auxiliary_unit_names: tuple[str, ...] = ('hx', 'inf_hx', 'eff_hx', 'kodrum')¶

Auxiliary unit operation names.

property biocrude_HHV¶

[float] Higher heating value of the biocrude, MJ/kg.

property energy_recovery¶

[float] Fraction of the feedstock’s HHV recovered in the biocrude.

line: str = 'Hydrothermal liquefaction'¶

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

run()¶

Run mass and energy balance. This method also runs specifications user defined specifications unless it is being run within a specification (to avoid infinite loops).

See also

_run, specifications, add_specification, add_bounded_numerical_specification

class qsdsan.unit_operations.static._hydrothermal.KnockOutDrum(ID='', ins: Sequence[AbstractStream] | None = None, outs: Sequence[AbstractStream] | None = (), thermo=None, init_with='Stream', include_construction=False, P=21026949.572, tau=0, V_wf=0, length_to_diameter=2, diameter=None, N=4, V=None, auxiliary=True, mixing_intensity=None, kW_per_m3=0, wall_thickness_factor=1, vessel_material='Stainless steel 316', vessel_type='Vertical', drum_cost_factor=1.5)¶

Knockout drum is an auxiliary unit for HydrothermalLiquefaction, used when its cost is calculated using generic pressure vessel algorithms (i.e., HydrothermalLiquefaction’s use_decorated_cost is False).

Parameters:

drum_cost_factor (float) – Cost multiplier applied to the vessel’s own baseline purchase cost (on top of vessel_material’s material factor, which biosteam’s PressureVessel machinery already applies automatically), to match the pre-refactor sludge model’s own drum_steel_cost_factor. Defaults to 1.5 – see [1], page 54: fully scaling the reference report’s factor from 2000 to 100 tons/day would need ~3, but that is too high, so 1.5 is used instead.

See also

HydrothermalLiquefaction

Reactor

biosteam.units.design_tools.PressureVessel

saf systems

References

[1] Knorr, D.; Lukas, J.; Schoen, P. Production of Advanced Biofuels via

Liquefaction - Hydrothermal Liquefaction Reactor Design: April 5, 2013; NREL/SR-5100-60462, 1111191; 2013; p NREL/SR-5100-60462, 1111191. https://doi.org/10.2172/1111191.

line: str = 'Knock out drum'¶

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

run()¶

Run mass and energy balance. This method also runs specifications user defined specifications unless it is being run within a specification (to avoid infinite loops).

See also

_run, specifications, add_specification, add_bounded_numerical_specification