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