Hydroprocessing#

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.sanunits._hydroprocessing.Hydrocracking(ID='', ins: Sequence[Stream] | None = None, outs: Sequence[Stream] | None = (), thermo=None, init_with='Stream', WHSV=0.625, catalyst_lifetime=39600, hydrogen_P=7168481.972000001, hydrogen_rxned_to_heavy_oil=0.01125, hydrogen_excess=5.556, hydrocarbon_ratio=1, HCin_T=667.15, HCrxn_T=724.15, HC_composition={'C10H22': 0.11756, 'C11H24': 0.16846, 'C12H26': 0.13198, 'C13H28': 0.09302, 'C14H30': 0.04643, 'C15H32': 0.0325, 'C16H34': 0.01923, 'C17H36': 0.00431, 'C18H38': 0.00099, 'C19H40': 0.00497, 'C20H42': 0.00033, 'C9H20': 0.09086, 'CH4': 0.0063, 'CO2': 0.0388, 'CYCHEX': 0.03714, 'HEPTANE': 0.11474, 'HEXANE': 0.01111, 'OCTANE': 0.08125}, P=None, tau=5, void_fraciton=0.4, length_to_diameter=2, diameter=None, N=None, V=None, auxiliary=False, mixing_intensity=None, kW_per_m3=0, wall_thickness_factor=1.5, vessel_material='Stainless steel 316', vessel_type='Vertical')#

Biocrude mixed with H2 are hydrotreated at elevated temperature (405°C) and pressure to produce upgraded biooil. Co-product includes fuel gas.

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

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

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

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

  • hydrogen_P (float) – Hydrogen pressure, [Pa].

  • hydrogen_rxned_to_heavy_oil (float) – Reacted H2 to heavy oil mass ratio.

  • hydrogen_excess (float) – Actual hydrogen amount = hydrogen_rxned_to_biocrude*hydrogen_excess

  • hydrocarbon_ratio (float) – Mass ratio of produced hydrocarbon to the sum of heavy oil and reacted H2.

  • HCin_T (float) – HC influent temperature, [K].

  • HCrxn_T (float) – HC effluent (after reaction) temperature, [K].

  • HC_composition (dict) – HC effluent composition.

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.

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.

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

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.

baseline_purchase_costs: dict[str, float]#

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

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.

heat_utilities: tuple[HeatUtility, ...]#

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

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 = 'Hydrocracking'#

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

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_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.

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

class qsdsan.sanunits._hydroprocessing.Hydrotreating(ID='', ins: Sequence[Stream] | None = None, outs: Sequence[Stream] | None = (), thermo=None, init_with='Stream', WHSV=0.625, catalyst_lifetime=15840, hydrogen_P=10548982.8, hydrogen_rxned_to_biocrude=0.046, hydrogen_excess=3, hydrocarbon_ratio=0.875, HTin_T=447.15, HTrxn_T=675.15, HT_composition={'C10H12': 0.0204, 'C10H16O4': 0.01837, 'C10H22': 0.0024, 'C11H24': 0.0204, 'C12H26': 0.0204, 'C15H32': 0.0612, 'C16H34': 0.1836, 'C17H36': 0.0816, 'C18H38': 0.0408, 'C19H40': 0.0408, 'C20H42': 0.102, 'C21H44': 0.0408, 'C24H38O4': 0.00817, 'C26H42O4': 0.0102, 'C2H6': 0.02923, 'C30H62': 0.00203, 'C3BENZ': 0.0102, 'C3H8': 0.0165, 'C4BENZ': 0.01223, 'C4H10': 0.0087, 'C6BENZ': 0.0204, 'C7BENZ': 0.0204, 'C8BENZ': 0.0204, 'C9H20': 0.00408, 'CC6METH': 0.0102, 'CH4': 0.0228, 'ETHCYC6': 0.00408, 'ETHYLBEN': 0.0204, 'FOURMONAN': 0, 'HEPTANE': 0.00401, 'HEXANE': 0.00401, 'NPENTAN': 0.00678, 'OCTANE': 0.01013, 'OTTFNA': 0.0102, 'OTTFSN': 0.0204, 'OXYLENE': 0.0102, 'PIPERDIN': 0.00408, 'PROCYC6': 0.00408, 'THREEMHEPTA': 0.0102, 'TOLUENE': 0.01013, 'TRICOSANE': 0.0408, 'TWOMBUTAN': 0.00408, 'TWOMHEXAN': 0.00408, 'TWOMPENTA': 0.00408}, P=None, tau=0.5, void_fraciton=0.4, length_to_diameter=2, diameter=None, N=None, 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, include_PSA=False, PSA_pre=4946300.824, PSA_efficiency=0.9)#

Biocrude mixed with H2 are hydrotreated at elevated temperature (405°C) and pressure to produce upgraded biooil. Co-product includes fuel gas. A pressure swing adsorption (PSA) process can be optionally included for H2 recovery.

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

  • outs (Iterable(stream)) – ht_out, catalyst_out = self.outs.

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

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

  • hydrogen_P (float) – Hydrogen pressure, [Pa].

  • hydrogen_rxned_to_biocrude (float) – Reacted H2 to biocrude mass ratio.

  • hydrogen_excess (float) – Actual hydrogen amount = hydrogen_rxned_to_biocrude*hydrogen_excess

  • hydrocarbon_ratio (float) – Mass ratio of produced hydrocarbon to the sum of biocrude and reacted H2.

  • HTin_T (float) – HT influent temperature, [K].

  • HTrxn_T (float) – HT effluent (after reaction) temperature, [K].

  • HT_composition (dict) – HT effluent composition.

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

  • include_PSA (bool) – Whether to include pressure swing adsorption for H2 recovery.

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] Towler, G.; Sinnott, R. Chapter 14 - Design of Pressure Vessels.

In Chemical Engineering Design (Second Edition); Towler, G., Sinnott, R., Eds.; Butterworth-Heinemann: Boston, 2013; pp 563–629. https://doi.org/10.1016/B978-0-08-096659-5.00014-6.

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.

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

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.

baseline_purchase_costs: dict[str, float]#

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

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.

heat_utilities: tuple[HeatUtility, ...]#

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

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 = 'Hydrotreating'#

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

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_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.

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