Electrochemical Cell¶
QSDsan: Quantitative Sustainable Design for sanitation and resource recovery systems
This module is developed by:
Zixuan Wang <wyatt4428@gmail.com>
Smiti Mittal <smitimittal@gmail.com>
Yalin Li <mailto.yalin.li@gmail.com>
Anna Kogler <akogler@stanford.edu>
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.
Note: unit_operations/static/_electrochemical_cell.py is a separate module holding ElectrochemicalCell/ElectrochemicalStrippingAdsorptionPrecipitation, the original monolithic (steady-state only) design that ESAP/ESAPRecovery/ ESAPEffluent here later replaced with a modular, dynamic-capable pipeline.
- class qsdsan.unit_operations.dynamic._electrochemical_cell.ESAP(ID='', ins: Sequence[AbstractStream] | None = None, outs: Sequence[AbstractStream] | None = (), thermo=None, *, recovery={'NH3': 0.7}, loss={'NH3': 0.06}, order=None, init_with='WasteStream', F_BM_default=None, isdynamic=False, OPEX_over_CAPEX=0.2, component_ID_NH3='NH3', component_ID_P='Phosphate', component_ID_Mg='Mg2+', **kwargs)¶
Splits an electrochemical stripping influent into a recovered-product stream, a loss stream, and an effluent, by independent component-wise recovery/loss mass fractions. This unit is the front-end split step of the modular ESAP process (paired with
ESAPRecoveryandESAPEffluentdownstream, which carry the equipment design and costing); it is able to perform dynamic simulation.- Parameters:
ins – Wastewater stream.
outs –
[0] recovery product
[1] loss stream
[2] effluent
recovery (dict) – Keys refer to chemical component IDs. Values refer to recovery fractions (with 1 being 100%) for the respective chemicals.
loss (dict) – Keys refer to chemical component IDs. Values refer to loss fractions (with 1 being 100%) for the respective chemicals.
- line: str = 'ESAP'¶
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
- property state¶
Component mass flow rate.
- class qsdsan.unit_operations.dynamic._electrochemical_cell.ESAPEffluent(ID='', ins: Sequence[AbstractStream] | None = None, outs: Sequence[AbstractStream] | None = (), thermo=None, *, loss={'Mg2+': 0.3, 'NH3': 0.5, 'Phosphate': 0.8}, order=None, init_with='WasteStream', F_BM_default=None, isdynamic=False)¶
Splitting the ESAP effluent. This unit is able to perform dynamic simulation.
- Parameters:
ins – Inlet fluid to be split
outs –
[0] loss stream during the process
[1] effluent stream
loss (dict) – Keys refer to chemical component IDs. Values refer to loss fractions (with 1 being 100%) for the respective chemicals. The fraction is respective to the influent of ESAP_effluent unit.
equipment (list(obj)) – List of Equipment objects part of the Electrochemical Cell.
OPEX_over_CAPEX (float) – Ratio with which operating costs are calculated as a fraction of capital costs
- line: str = 'ESAPEffluent'¶
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.dynamic._electrochemical_cell.ESAPRecovery(ID='', ins: Sequence[AbstractStream] | None = None, outs: Sequence[AbstractStream] | None = (), thermo=None, *, recovery={'Mg2+': 0.7, 'NH3': 0.8, 'Phosphate': 0.95}, order=None, init_with='WasteStream', F_BM_default=None, isdynamic=False, N_treatment_capacity=0.015, OPEX_over_CAPEX=0.2, component_ID_NH3='NH3', component_ID_P='Phosphate', component_ID_Mg='Mg2+', N_prodcut_concentration=2)¶
Electrochemical stripping, adsorption, and precipitation for nutrient recovery. This unit is able to perform dynamic simulation.
- Parameters:
ins – Wastewater stream
outs –
[0] recovery product
[1] Remainder stream
recovery (dict) – Keys refer to chemical component IDs. Values refer to recovery fractions (with 1 being 100%) for the respective chemicals.
equipment (list(obj)) – List of Equipment objects part of the Electrochemical Cell.
N_treatment_capacity (float) – kg N/h designed treatment capacity for 1 tower.
OPEX_over_CAPEX (float) – Ratio with which operating costs are calculated as a fraction of capital costs
component_ID_NH3 (string) – The ID for ammonia/ammonium in the influent wastestream
component_ID_P (string) – The ID for dissolved phosphate in the influent wastestream
component_ID_Mg (string) – The ID for dissolved magnesium in the influent wastestream
N_prodcut_concentration (float) – molar concentration (mol/L) of N in the final product
- line: str = 'ESAPRecovery'¶
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