Hydrothermal¶
QSDsan: Quantitative Sustainable Design for sanitation and resource recovery systems
This module is developed by:
Jianan Feng <jiananf2@illinois.edu>
Yalin Li <mailto.yalin.li@gmail.com>
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']
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.
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