Abstract Unit¶
Note¶
These units are for process simulation only and do not have design and cost algorithms
QSDsan: Quantitative Sustainable Design for sanitation and resource recovery systems
This module is developed by:
Yalin Li <mailto.yalin.li@gmail.com>
Joy Zhang <joycheung1994@gmail.com>
Jianan Feng <jiananf2@illinois.edu>
Part of this module is based on the biosteam package: https://github.com/BioSTEAMDevelopmentGroup/biosteam
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._abstract.ComponentSplitter(ID='', ins: Sequence[AbstractStream] | None = None, outs: Sequence[AbstractStream] | None = (), thermo=None, init_with='WasteStream', split_keys=())¶
Split the influent into individual components, the last effluent contains all remaining components.
- Parameters:
split_keys (iterable) –
IDs of components to be split to different effluents. Element of the item in the iterable can be str or another iterable containing component IDs. If the item is also iterable, all components whose ID are in the iterable will be split to the same effluent. The split is always 1 for a certain component to an effluent (i.e., complete split).
Note
Length of the split_keys() (which determines size of the outs) cannot be changed after initiation.
Examples
- line: str = 'Component splitter'¶
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 split_keys¶
[iterable] IDs of components to be split to different effluents. Element of the item in the iterable can be str or another iterable containing component IDs. If the item is also iterable, all components whose ID are in the iterable will be split to the same effluent. The split is always 1 for a certain component to an effluent (i.e., complete split).
Note
Length of the split_keys() (which determines size of the outs) cannot be changed after initiation.
- class qsdsan.sanunits._abstract.FakeSplitter(ID='', ins: Sequence[AbstractStream] | None = None, outs: Sequence[AbstractStream] | None = (), thermo=None, init_with='WasteStream', include_construction=True, construction=[], transportation=[], equipment=[], add_OPEX={}, uptime_ratio=1.0, lifetime=None, F_BM_default=None, isdynamic=False, exogenous_vars=(), **kwargs)¶
Similar to
biosteam.units.FakeSplitter
, but can be initialized withqsdsan.SanStream
andqsdsan.WasteStream
.See also
- line: str = 'Fake splitter'¶
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._abstract.Mixer(ID='', ins: Sequence[AbstractStream] | None = None, outs: Sequence[AbstractStream] | None = (), thermo=None, init_with='WasteStream', F_BM_default=None, isdynamic=False, rigorous=False, conserve_phases=False)¶
Similar to
biosteam.units.Mixer
, but can be initialized withqsdsan.SanStream
andqsdsan.WasteStream
, and allows dynamic simulation.See also
- line: str = 'Mixer'¶
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¶
The state of the Mixer, including component concentrations [mg/L] and flow rate [m^3/d].
- class qsdsan.sanunits._abstract.PhaseChanger(ID='', ins: Sequence[AbstractStream] | None = None, outs: Sequence[AbstractStream] | None = (), thermo=None, init_with='WasteStream', phase='l')¶
Change the effluent phase to the desired one, also allow the switch between stream types.
- Parameters:
ins (Iterable(stream)) – influent
outs (Iterable(stream)) – effluent
phase (str) – Desired phase, can only be one of (“g”, “l”, or “s”).
- line: str = 'Phase changer'¶
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._abstract.ReversedSplitter(ID='', ins: Sequence[AbstractStream] | None = None, outs: Sequence[AbstractStream] | None = (), thermo=None, init_with='WasteStream', include_construction=True, construction=[], transportation=[], equipment=[], add_OPEX={}, uptime_ratio=1.0, lifetime=None, F_BM_default=None, isdynamic=False, exogenous_vars=(), **kwargs)¶
Similar to
biosteam.units.ReversedSplitter
, but can be initialized withqsdsan.SanStream
andqsdsan.WasteStream
.See also
- line: str = 'Reversed splitter'¶
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._abstract.Sampler(ID='', ins: Sequence[AbstractStream] | None = None, outs: Sequence[AbstractStream] | None = (), thermo=None, *, init_with='WasteStream', F_BM_default=None, isdynamic=False)¶
A non-reactive (i.e., all the outs at the same as the ins) unit that is used in dynamic simulation to record the unit/stream states.
- line: str = 'Sampler'¶
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¶
The sampled state, including component concentrations [mg/L] and flow rate [m^3/d].
- class qsdsan.sanunits._abstract.Splitter(ID='', ins: Sequence[AbstractStream] | None = None, outs: Sequence[AbstractStream] | None = (), thermo=None, *, split, order=None, init_with='WasteStream', F_BM_default=None, isdynamic=False)¶
Similar to
biosteam.units.Splitter
, but can be initialized withqsdsan.SanStream
andqsdsan.WasteStream
, and allows dynamic simulation.See also
- line: str = 'Splitter'¶
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 concentrations and total flow rate.