Clarifier

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._clarifier.FlatBottomCircularClarifier(ID='', ins: Sequence[AbstractStream] | None = None, outs: Sequence[AbstractStream] | None = (), thermo=None, init_with='WasteStream', underflow=2000, wastage=385, surface_area=1500, height=4, N_layer=10, feed_layer=4, X_threshold=3000, v_max=474, v_max_practical=250, rh=0.000576, rp=0.00286, fns=0.00228, maximum_nonsettleable_solids=None, F_BM_default={'Pump': 1.1800826, 'Pump building': 1.1800826, 'Pumps': 1, 'Scraper': 1, 'Slab concrete': 1.0, 'Wall concrete': 1.0, 'Wall stainless steel': 1.0, 'v notch weir': 1}, isdynamic=True, downward_flow_velocity=42, design_influent_TSS=None, design_influent_flow=None, design_solids_loading_rate=6, **kwargs)

A flat-bottom circular clarifier with a simple 1-dimensional N-layer settling model.

Parameters:
  • ID (str) – ID for the clarifier. The default is ‘’.

  • ins (WasteStream) – Influent to the clarifier. Expected number of influent is 1.

  • outs (WasteStream) – Treated effluent and sludge.

  • underflow (float, optional) – Designed recycling sludge flowrate (RAS), in [m^3/d]. The default is 2000.

  • wastage (float, optional) – Designed wasted sludge flowrate (WAS), in [m^3/d]. The default is 385.

  • surface_area (float, optional) – Surface area of the clarifier, in [m^2]. The default is 1500.

  • height (float, optional) – Height of the clarifier, in [m]. The default is 4.

  • N_layer (int, optional) – The number of layers to model settling. The default is 10.

  • feed_layer (int, optional) – The feed layer counting from top to bottom. The default is 4.

  • X_threshold (float, optional) – Threshold suspended solid concentration, in [g/m^3]. The default is 3000.

  • v_max (float, optional) – Maximum theoretical (i.e. Vesilind) settling velocity, in [m/d]. The default is 474.

  • v_max_practical (float, optional) – Maximum practical settling velocity, in [m/d]. The default is 250.

  • rh (float, optional) – Hindered zone settling parameter in the double-exponential settling velocity function, in [m^3/g]. The default is 5.76e-4.

  • rp (float, optional) – Flocculant zone settling parameter in the double-exponential settling velocity function, in [m^3/g]. The default is 2.86e-3.

  • fns (float, optional) – Non-settleable fraction of the suspended solids, dimensionless. Must be within [0, 1]. The default is 2.28e-3.

  • maximum_nonsettleable_solids (float, optional) – Maximum non-settleable solids concentration, in mgTSS/L. The default is None.

  • downward_flow_velocity (float, optional) – Speed on the basis of which center feed diameter is designed [m/hr]. The default is 42 m/hr (0.7 m/min). [2]

  • design_influent_TSS (float, optional) – The design TSS concentration [mg/L] in the influent going to the secondary clarifier.

  • design_influent_flow (float, optional) – The design influent tptal volumetric flow [m3/hr] going to the secondary clarifier.

  • design_solids_loading_rate (float, optional) – Rate of total suspended solids entering the secondary clarifier (kg/(m2*hr)). The default is 5 kg/(m2*hr) [3, 4]

References

[1] Takács, I.; Patry, G. G.; Nolasco, D. A Dynamic Model of the Clarification -Thickening Process. Water Res. 1991, 25 (10), 1263–1271. https://doi.org/10.1016/0043-1354(91)90066-Y.

[2] Chapter-12: Suspended-growth Treatment Processes. WEF Manual of Practice No. 8. 6th Edition. Virginia: McGraw-Hill, 2018.

[3] Metcalf, Leonard, Harrison P. Eddy, and Georg Tchobanoglous. Wastewater engineering: treatment, disposal, and reuse. Vol. 4. New York: McGraw-Hill, 1991.

[4] Introduction to Wastewater Clarifier Design by Nikolay Voutchkov, PE, BCEE.

[5] RECOMMENDED STANDARDS for WASTEWATER FACILITIES. 10 state standards. 2014 edition.

property A_settle

[float] The surface area for settling in m^2, i.e., the area of the clarifier’s flat bottom.

property N_layer

[int] The number of layers into which the clarifier is divided in the settling model.

property V_settle

[float] Total volume modeled for settling in m^3, calculated based on surface area and height.

property X_t

[float] Threshold suspended solid concentration, in g/m^3.

property feed_layer

[int] The feed layer counting from top to bottom.

property fns

[float] Non-settleable fraction of the suspended solids

property h_layer

[float] The height of each layer in the settling model, in m.

property height

[float] Height of the clarifier in m.

line: str = 'Flat bottom circular clarifier'

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

property maximum_nonsettleable_solids

[float] Maximum non-settleable solids concentration, in mgTSS/L.

property rh

[float] Hindered zone settling parameter in the double-exponential settling velocity function, in m^3/g.

property rp

[float] Flocculant zone settling parameter in the double-exponential settling velocity function, in m^3/g.

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

set_init_TSS(arr)

set the initial TSS [mg/L] in each layer of the clarifier.

set_init_sludge_solids(**kwargs)

set the initial concentrations [mg/L] of solids in the underflow sludge.

set_init_solubles(**kwargs)

set the initial concentrations [mg/L] of solubles in the clarifier.

property solids_loading_rate

solids_loading_rate is the loading in the clarifier

property underflow

[float] The designed recycling sludge flow rate in m3/d.

property v_max

[float] Maximum theoretical (i.e. Vesilind) settling velocity, in m/d

property v_max_p

[float] Maximum practical settling velocity, in m/d

property wastage

[float] The designed wasted sludge flow rate in m3/d.

class qsdsan.sanunits._clarifier.IdealClarifier(ID='', ins: Sequence[AbstractStream] | None = None, outs: Sequence[AbstractStream] | None = (), thermo=None, sludge_flow_rate=2000, solids_removal_efficiency=0.995, sludge_MLSS=None, isdynamic=False, init_with='WasteStream', F_BM_default=None, **kwargs)

Ideal clarifier that settles suspended solids by specified efficiency. Has no design or costing algorithm. Governing equations are

\[ \begin{align}\begin{aligned}Q_i X_i = Q_e X_e + Q_s X_s\\Q_i = Q_e + Q_s\\X_e = X_i * (1-e_rmv)\end{aligned}\end{align} \]

where subscripts ‘i’, ‘e’, ‘s’ represent influent, overflow effluent, and underflow sludge, respectively. ‘Q’ indicates volumetric flowrate and ‘X’ indicates suspended solids concentration.

Parameters:
  • sludge_flow_rate (float, optional) – Underflow sludge flowrate [m3/d]. The default is 2000.

  • solids_removal_efficiency (float, optional) – Removal efficiency (concentration basis) of suspended solids, unitless. The default is 0.995.

  • sludge_MLSS (float, optional) – Underflow MLSS [mg/L]. Used only when either solids_removal_efficiency or sludge_flow_rate is unspecified. The default is None.

line: str = 'Ideal clarifier'

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 sludge_flow_rate

[float] The designed sludge flow rate (wasted + recycled) in m3/d.

class qsdsan.sanunits._clarifier.PrimaryClarifier(ID='', ins: Sequence[AbstractStream] | None = None, outs: Sequence[AbstractStream] | None = (), sludge_flow_rate=2000, solids_removal_efficiency=0.6, sludge_MLSS=None, thermo=None, isdynamic=False, init_with='WasteStream', surface_overflow_rate=41, depth_clarifier=4.5, downward_flow_velocity=36, F_BM={'Pump': 1.1800826, 'Pump building': 1.1800826, 'Pumps': 1, 'Scraper': 1, 'Slab concrete': 1.0, 'Wall concrete': 1.0, 'Wall stainless steel': 1.0, 'v notch weir': 1}, **kwargs)

Primary clarifier with an ideal settling process model.

Parameters:
  • surface_overflow_rate (float) – Surface overflow rate in the clarifier in [(m3/day)/m2]. [1] Design SOR value for clarifier is 41 (m3/day)/m2 if it does not receive WAS. Design SOR value for clarifier is 29 (m3/day)/m2 if it receives WAS. Typically SOR lies between 30-50 (m3/day)/m2. Here default value of 41 (m3/day)/m2 is used.

  • depth_clarifier (float) – Depth of clarifier. Typical depths range from 3 m to 4.9 m [1], [2]. Default value of 4.5 m would be used here.

  • downward_flow_velocity (float, optional) – Speed on the basis of which center feed diameter is designed [m/hr]. [3] The default is 36 m/hr. (10 mm/sec)

  • F_BM (dict) – Equipment bare modules.

Examples

>>> from qsdsan import set_thermo, Components, WasteStream, System
>>> cmps = Components.load_default()
>>> cmps_test = cmps.subgroup(['S_F', 'S_NH4', 'X_OHO', 'H2O'])
>>> set_thermo(cmps_test)
>>> ws = WasteStream('ws', S_F = 10, S_NH4 = 20, X_OHO = 15, H2O=1000)
>>> from qsdsan.sanunits import PrimaryClarifier
>>> PC = PrimaryClarifier(ID='PC', ins=ws, outs=('effluent', 'sludge'),
...                       solids_removal_efficiency=0.6,
...                       sludge_flow_rate=ws.F_vol*24*0.3,
...                       isdynamic=True)
>>> sys = System('sys', path=(PC,))
>>> sys.simulate(t_span=(0,10), method='BDF')  
>>> PC.show() 
PrimaryClarifier: PC
ins...
[0] ws
phase: 'l', T: 298.15 K, P: 101325 Pa
flow (g/hr): S_F    1e+04
                S_NH4  2e+04
                X_OHO  1.5e+04
                H2O    1e+06
    WasteStream-specific properties:
     pH         : 7.0
     Alkalinity : 2.5 mmol/L
     COD        : 23873.0 mg/L
     BOD        : 14963.2 mg/L
     TC         : 8298.3 mg/L
     TOC        : 8298.3 mg/L
     TN         : 20363.2 mg/L
     TP         : 367.6 mg/L
     TK         : 68.3 mg/L
     TSS        : 11124.4 mg/L
outs...
[0] effluent
phase: 'l', T: 298.15 K, P: 101325 Pa
flow (g/hr): S_F    7e+03
                S_NH4  1.4e+04
                X_OHO  4.2e+03
                H2O    7.04e+05
    WasteStream-specific properties:
     pH         : 7.0
     COD        : 15278.7 mg/L
     BOD        : 10093.4 mg/L
     TC         : 5152.8 mg/L
     TOC        : 5152.8 mg/L
     TN         : 19776.2 mg/L
     TP         : 204.4 mg/L
     TK         : 27.3 mg/L
     TSS        : 4449.8 mg/L
[1] sludge
phase: 'l', T: 298.15 K, P: 101325 Pa
flow (g/hr): S_F    3e+03
                S_NH4  6e+03
                X_OHO  1.08e+04
                H2O    2.96e+05
    WasteStream-specific properties:
     pH         : 7.0
     COD        : 43926.3 mg/L
     BOD        : 26326.2 mg/L
     TC         : 15637.8 mg/L
     TOC        : 15637.8 mg/L
     TN         : 21732.8 mg/L
     TP         : 748.7 mg/L
     TK         : 163.9 mg/L
     TSS        : 26698.6 mg/L

References

[1] Chapter-10: Primary Treatment. Design of water resource recovery facilities. WEF Manual of Practice No. 8. 6th Edition. Virginia: McGraw-Hill, 2018.

[2] Metcalf, Leonard, Harrison P. Eddy, and Georg Tchobanoglous. Wastewater engineering: treatment, disposal, and reuse. Vol. 4. New York: McGraw-Hill, 1991.

[3] Introduction to Wastewater Clarifier Design by Nikolay Voutchkov, PE, BCEE.

line: str = 'Primary clarifier'

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._clarifier.PrimaryClarifierBSM2(ID='', ins: Sequence[AbstractStream] | None = None, outs: Sequence[AbstractStream] | None = (), thermo=None, isdynamic=True, init_with='WasteStream', volume=900, ratio_uf=0.007, mean_f_x=0.85, f_corr=0.65, F_BM={'Pump': 1.1800826, 'Pump building': 1.1800826, 'Pumps': 1, 'Scraper': 1, 'Slab concrete': 1.0, 'Wall concrete': 1.0, 'Wall stainless steel': 1.0, 'v notch weir': 1}, **kwargs)

A Primary clarifier based on the Otterpohl model [1] in BSM2 [2].

Parameters:
  • ID (str) – ID for the clarifier.

  • ins (class:WasteStream) – Influent to the clarifier. Expected number of influent is 3.

  • outs (class:WasteStream) – Sludge (uf) and treated effluent (of).

  • volume (float, optional) – Clarifier volume, in m^3. The default is 900.

  • ratio_uf (float) – The volumetric ratio of sludge to primary influent. The default is 0.007, based on IWA report.[2]

  • mean_f_x (float, optional) – The average fraction of particulate COD out of total COD in primary influent. The default is 0.85.

  • f_corr (float) – Dimensionless correction factor for removal efficiency in the primary clarifier.[2]

Examples

>>> from qsdsan import set_thermo, Components, WasteStream
>>> cmps = Components.load_default()
>>> cmps_test = cmps.subgroup(['S_F', 'S_NH4', 'X_OHO', 'H2O'])
>>> set_thermo(cmps_test)
>>> ws = WasteStream('ws', S_F = 10, S_NH4 = 20, X_OHO = 15, H2O=1000)
>>> from qsdsan.sanunits import PrimaryClarifierBSM2
>>> PC = PrimaryClarifierBSM2(ID='PC', ins= (ws,), outs=('eff', 'sludge'),
...                           isdynamic=False)
>>> PC.simulate()
>>> of, uf = PC.outs
>>> uf.imass['X_OHO']/ws.imass['X_OHO'] 
0.598...
>>> PC.show()
PrimaryClarifierBSM2: PC
ins...
[0] ws
phase: 'l', T: 298.15 K, P: 101325 Pa
flow (g/hr): S_F    1e+04
                S_NH4  2e+04
                X_OHO  1.5e+04
                H2O    1e+06
    WasteStream-specific properties:
     pH         : 7.0
     Alkalinity : 2.5 mmol/L
     COD        : 23873.0 mg/L
     BOD        : 14963.2 mg/L
     TC         : 8298.3 mg/L
     TOC        : 8298.3 mg/L
     TN         : 20363.2 mg/L
     TP         : 367.6 mg/L
     TK         : 68.3 mg/L
     TSS        : 11124.4 mg/L
outs...
[0] eff
phase: 'l', T: 298.15 K, P: 101325 Pa
flow (g/hr): S_F    9.93e+03
                S_NH4  1.99e+04
                X_OHO  6.03e+03
                H2O    9.93e+05
    WasteStream-specific properties:
     pH         : 7.0
     COD        : 15436.7 mg/L
     BOD        : 10190.8 mg/L
     TC         : 5208.2 mg/L
     TOC        : 5208.2 mg/L
     TN         : 19890.1 mg/L
     TP         : 206.9 mg/L
     TK         : 27.8 mg/L
     TSS        : 4531.6 mg/L
[1] sludge
phase: 'l', T: 298.15 K, P: 101325 Pa
flow (g/hr): S_F    70
                S_NH4  140
                X_OHO  8.97e+03
                H2O    7e+03
    WasteStream-specific properties:
     pH         : 7.0
     COD        : 693717.5 mg/L
     BOD        : 393895.7 mg/L
     TC         : 253653.4 mg/L
     TOC        : 253653.4 mg/L
     TN         : 57923.7 mg/L
     TP         : 13132.3 mg/L
     TK         : 3282.0 mg/L
     TSS        : 534594.0 mg/L

References

[1] Otterpohl R. and Freund M. (1992). Dynamic Models for clarifiers of activated sludge plants with dry and wet weather flows. Water Sci. Technol., 26(5-6), 1391-1400.

[2] Gernaey, Krist V., Ulf Jeppsson, Peter A. Vanrolleghem, and John B. Copp. Benchmarking of control strategies for wastewater treatment plants. IWA publishing, 2014.

property f_x

[float] Fraction of particulate COD [-].

line: str = 'Primary Clarifier BSM2'

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

set_init_conc(**kwargs)

set the initial concentrations [mg/L].