Reclaimer¶
QSDsan: Quantitative Sustainable Design for sanitation and resource recovery systems
This module is developed by:
Tori Morgan <vlmorgan@illinois.edu>
Yalin Li <mailto.yalin.li@gmail.com>
Hannah Lohman <hlohman94@gmail.com>
Lewis Rowles <stetsonsc@gmail.com>
This module contains unit operations used in the Reclaimer system developed by Duke University as described in https://washaid.pratt.duke.edu/work/water-sanitation/reinvent-toilet-challenge and Trotochaud et al.
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._reclaimer.ReclaimerECR(ID='', ins: Sequence[AbstractStream] | None = None, outs: Sequence[AbstractStream] | None = (), thermo=None, init_with='WasteStream', if_gridtied=True, ppl=1, **kwargs)¶
Electrochemical reactor (ECR) in the Reclaimer system with chlorine dosing.
This is a non-reactive unit (i.e., the effluent is copied from the influent).
The following impact items should be pre-constructed for life cycle assessment: Titanium.
- Parameters:
ppl (int) – Total number of users for scaling of costs.
if_gridtied (bool) – If using grid electricity instead of photovoltaic electricity.
References
[1] Trotochaud et al., Laboratory Demonstration and Preliminary Techno-Economic Analysis of an Onsite Wastewater Treatment System Environ. Sci. Technol. 2020, 54, (24), 16147–16155. https://dx.doi.org/10.1021/acs.est.0c02755
[2] Duke Center for WaSH-AID Reclaimer design team data and guidance https://washaid.pratt.duke.edu/work/water-sanitation/reinvent-toilet-challenge
- property N_reclaimers¶
[int] Number of the reclaimer units needed, calculated by ppl/baseline_ppl.
- line: str = 'Reclaimer ECR'¶
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.sanunits._reclaimer.ReclaimerHousing(ID='', ins: Sequence[AbstractStream] | None = None, outs: Sequence[AbstractStream] | None = (), thermo=None, init_with='WasteStream', ppl=1, **kwargs)¶
Structural housing for the Reclaimer system.
This is a non-reactive unit (i.e., the effluent is copied from the influent).
The following impact items should be pre-constructed for life cycle assessment: Steel.
- Parameters:
ppl (int) – Total number of users for scaling of costs.
References
[1] Trotochaud et al., Laboratory Demonstration and Preliminary Techno-Economic Analysis of an Onsite Wastewater Treatment System Environ. Sci. Technol. 2020, 54, (24), 16147–16155. https://dx.doi.org/10.1021/acs.est.0c02755
[2] Duke Center for WaSH-AID Reclaimer design team data and guidance https://washaid.pratt.duke.edu/work/water-sanitation/reinvent-toilet-challenge
[3] Eco-san water recycling toilet Reinvented Toilet design team bill of materials https://sanitation.ansi.org/EcoSanToilet
- property N_reclaimers¶
[int] Number of the reclaimer units needed, calculated by ppl/baseline_ppl.
- property N_toilets¶
[int] Number of the MURT units, calculated by ppl/ppl_per_MURT.
- line: str = 'Reclaimer housing'¶
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.sanunits._reclaimer.ReclaimerIonExchange(ID='', ins: Sequence[AbstractStream] | None = None, outs: Sequence[AbstractStream] | None = (), thermo=None, init_with='WasteStream', ppl=1, **kwargs)¶
Ion exchange in the Reclaimer system is used for N recovery from liquid stream. Concentrated NH3 is recovered.
The following impact items should be pre-constructed for life cycle assessment: Plastic, PVC, Steel.
- Parameters:
ins (Iterable(stream)) – waste: liquid waste stream to be treated by ion exchange unit. zeolite_in: zeolite input. gac_in: GAC input. KCl: KCl input.
outs (Iterable(stream)) – treated: treated liquid leaving ion exchange unit. zeolite_out: spent zeolite. gac_out: spent GAC. conc_NH3: concentrated NH3.
ppl (int) – Total number of users for scaling of costs.
References
[1] Lohman et al., Advancing Sustainable Sanitation and Agriculture through Investments in Human-Derived Nutrient Systems. Environ. Sci. Technol. 2020, 54, (15), 9217-9227. https://dx.doi.org/10.1021/acs.est.0c03764
[2] Tarpeh et al., Evaluating ion exchange for nitrogen recovery from source-separated urine in Nairobi, Kenya. Development Engineering. 2018, 3, 188–195. https://doi.org/10.1016/j.deveng.2018.07.002
[3] Trotochaud et al., Laboratory Demonstration and Preliminary Techno-Economic Analysis of an Onsite Wastewater Treatment System Environ. Sci. Technol. 2020, 54, (24), 16147–16155. https://dx.doi.org/10.1021/acs.est.0c02755
[4] Duke Center for WaSH-AID Reclaimer design team data and guidance https://washaid.pratt.duke.edu/work/water-sanitation/reinvent-toilet-challenge
- property N_reclaimers¶
[int] Number of the reclaimer units needed, calculated by ppl/baseline_ppl.
- line: str = 'Reclaimer ion exchange'¶
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.sanunits._reclaimer.ReclaimerSolar(ID='', ins: Sequence[AbstractStream] | None = None, outs: Sequence[AbstractStream] | None = (), thermo=None, init_with='WasteStream', **kwargs)¶
Photovoltaic system for solar power generation in the Reclaimer system.
This is a non-reactive unit (i.e., the effluent is copied from the influent).
The following impact items should be pre-constructed for life cycle assessment: Battery, Solar.
- Parameters:
ppl (int) – Total number of users for scaling of costs.
References
[1] Trotochaud et al., Laboratory Demonstration and Preliminary Techno-Economic Analysis of an Onsite Wastewater Treatment System Environ. Sci. Technol. 2020, 54, (24), 16147–16155. https://dx.doi.org/10.1021/acs.est.0c02755
[2] Duke Center for WaSH-AID Reclaimer design team data and guidance https://washaid.pratt.duke.edu/work/water-sanitation/reinvent-toilet-challenge
[3] Eco-san water recycling toilet Reinvented Toilet design team bill of materials https://sanitation.ansi.org/EcoSanToilet
- line: str = 'Reclaimer solar'¶
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.sanunits._reclaimer.ReclaimerSystem(ID='', ins: Sequence[AbstractStream] | None = None, outs: Sequence[AbstractStream] | None = (), thermo=None, init_with='WasteStream', if_gridtied=True, ppl=1, **kwargs)¶
System connection components for the Reclaimer system.
This is a non-reactive unit (i.e., the effluent is copied from the influent).
The following impact items should be pre-constructed for life cycle assessment: Steel.
- Parameters:
ppl (int) – Total number of users for scaling of costs.
if_gridtied (bool) – If using grid electricity instead of photovoltaic electricity.
References
[1] Trotochaud et al., Laboratory Demonstration and Preliminary Techno-Economic Analysis of an Onsite Wastewater Treatment System Environ. Sci. Technol. 2020, 54, (24), 16147–16155. https://dx.doi.org/10.1021/acs.est.0c02755
[2] Duke Center for WaSH-AID Reclaimer design team data and guidance https://washaid.pratt.duke.edu/work/water-sanitation/reinvent-toilet-challenge
- property N_reclaimers¶
[int] Number of the reclaimer units needed, calculated by ppl/baseline_ppl.
- line: str = 'Reclaimer system'¶
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.sanunits._reclaimer.ReclaimerUltrafiltration(ID='', ins: Sequence[AbstractStream] | None = None, outs: Sequence[AbstractStream] | None = (), thermo=None, init_with='WasteStream', if_gridtied=True, ppl=1, **kwargs)¶
Ultrafiltration in the Reclaimer system is used for removing suspended solids with automated backwash.
The following impact items should be pre-constructed for life cycle assessment: Plastic, Steel.
- Parameters:
ins (Iterable(stream)) – waste: liquid waste stream to be treated by ultrafiltration unit.
outs (Iterable(stream)) – treated: treated liquid leaving ultrafiltration unit. retentate: concentrated retentate leaving ultrafiltration unit.
ppl (int) – Total number of users for scaling of costs.
if_gridtied (bool) – If using grid electricity instead of photovoltaic electricity.
References
[1] Trotochaud et al., Laboratory Demonstration and Preliminary Techno-Economic Analysis of an Onsite Wastewater Treatment System Environ. Sci. Technol. 2020, 54, (24), 16147–16155. https://dx.doi.org/10.1021/acs.est.0c02755
[2] Duke Center for WaSH-AID Reclaimer design team data and guidance https://washaid.pratt.duke.edu/work/water-sanitation/reinvent-toilet-challenge
- property N_reclaimers¶
[int] Number of the reclaimer units needed, calculated by ppl/baseline_ppl.
- line: str = 'Reclaimer ultrafiltration'¶
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