Wastewater Treatment (WWT)¶
[1]:
import PFAS_SAT as ps
import numpy as np
import matplotlib.pyplot as plt
from IPython.display import Image
import pandas as pd
pd.set_option('display.max_colwidth', 0)
Model document¶
The WWT process models in the SAT framework are designed so that by changing default parameters, a variety of WWT technology components and configurations can be represented. A relatively small amount of the incoming PFAS may be released in initial screen rejects and grit. Volatilization is another potential pathway, and its importance is currently poorly understood. Most PFAS entering conventional WWTPs will exit in the effluent or with the solids. In an increasing number of cases, some fraction of the PFAS are removed in tertiary treatment through reverse osmosis (RO), ion exchange (IX) or granular activated carbon (GAC) adsorption systems prior to release. These systems then produce new waste streams (i.e., RO concentrate and spent GAC, respectively) that must be managed.
The mass flow of PFAS through the WWT processes is modeled using a water and mass balance through the system. The incoming PFAS-waste is diluted with the rest of the influent wastewater. When PFAS is partitioned between liquids and solids, it is assumed that equilibrium is achieved. The model does not consider transformations of PFAS. A relatively small fraction of the influent water leaves in the screen rejects and grit. The water lost with the material is assumed to have the same PFAS concentration as the influent. The remainder of the water and PFAS enters primary settling (if the WWTP has primary settling), and a fraction of the water at the influent PFAS concentration is again lost. The rest of the PFAS-containing water enters biological treatment, where PFAS partitions between the solids and liquid based on the organic carbon-normalized partition coefficient for each PFAS. The effluent from biological treatment enters secondary settling, which acts in a similar manner to primary settling. The effluent from secondary settling can then either be released to surface water or continue to tertiary treatment. The primary and secondary solids can then be thickened, dewatered, dried, stabilized, anaerobically digested or composted. The effluent can be treated through tertiary treatment processes designed to remove PFAS, such as GAC, RO, or IX.
Assumptions and Limitations¶
The model assumes that liquids lost in screen rejects, grit, and settled solids have the same PFAS concentrations as the liquid entering the process.
Volatilization is assumed to be zero. However, the user may assign a fraction of the PFAS that volatilizes/aerosolizes.
Future work and additional data are required to include PFAS transformations during WWT processes.
Input Parameters for WWT model¶
[2]:
WWT = ps.WWT()
WWT.InputData.Data[['Category','Parameter Name', 'Parameter Description', 'amount', 'unit','minimum','maximum','Reference']]
[2]:
Category | Parameter Name | Parameter Description | amount | unit | minimum | maximum | Reference | |
---|---|---|---|---|---|---|---|---|
0 | WWT Plant | Des_Cap | Design capacity of the WWT plant | 7.6000 | Million Liter/day | 3.00 | 300.000 | NaN |
1 | Screen Rejects | frac_sr-grit | Mass fraction influent into screen rejects and grit | 0.0001 | fraction | NaN | NaN | NaN |
2 | Screen Rejects | sol_cont_sr_grit | Solids content of the screen rejects and grit | 0.6500 | fraction | 0.50 | 0.900 | [1] |
3 | Primary Settling | is_prim_set | Is there primary settling | 1.0000 | 1:TRUE,0:FALSE | NaN | NaN | NaN |
4 | Primary Settling | frac_prim_solids | Mass fraction influent into settling that exits in the solids | 0.0040 | fraction | NaN | NaN | [1] |
5 | Primary Settling | sol_cont_prim_solids | Solids content of primary solids - wet | 0.0600 | fraction | 0.04 | 0.080 | [1] |
6 | Biological Treatmet | sol_cont | Mixed liquor suspended solids (MLSS) | 3000.0000 | mg/L | 2000.00 | 4000.000 | [1] |
7 | Biological Treatmet | C_cont | Carbon content of the MLSS | 0.5000 | kg TS/kg | NaN | NaN | NaN |
8 | Biological Treatmet | VS_cont | VS content of the MLSS - dry | 0.8000 | kg VSS/kg TS | NaN | NaN | NaN |
9 | Thickening | is_prim_thick | Does primary sludge go to thickening | 1.0000 | 1:TRUE,0:FALSE | NaN | NaN | NaN |
10 | Thickening | is_sec_thick | Does secondary sludge go to thickening | 1.0000 | 1:TRUE,0:FALSE | NaN | NaN | NaN |
11 | Thickening | sol_cont_thick | Solids content after thickening | 0.0500 | fraction | 0.03 | 0.100 | [1] |
12 | Dewatering | is_sol_dew | Are solids dewatered | 1.0000 | 1:TRUE,0:FALSE | NaN | NaN | NaN |
13 | Dewatering | sol_cont_dewat | Solids content of dewatered solids | 0.2200 | kg TS/kg | 0.15 | 0.300 | [1] |
14 | Secondary Settling | is_sec_set | Is there secondary settling | 1.0000 | 1:TRUE,0:FALSE | NaN | NaN | NaN |
15 | Secondary Settling | frac_sec_solids | Mass fraction influent into settling that exits in the solids | 0.0160 | fraction | NaN | NaN | [1] |
16 | Drying | is_sol_dry | Are solids dried | 1.0000 | 1:TRUE,0:FALSE | NaN | NaN | NaN |
17 | Drying | sol_cont_dry | Solids content of dried solids | 0.9000 | kg TS/kg | 0.65 | 0.950 | [1] |
18 | Drying | frac_PFAS_to_Vol | Fraction of PFAS lost to volatilization | 0.0000 | fraction | NaN | NaN | NaN |
19 | Volatilization | frac_vol_loss | Fraction of PFAS lost to volatilization | 0.0000 | fraction | NaN | NaN | NaN |
20 | Log partition coefficient | PFOA | PFOA Log Koc (WWT) | 2.1900 | log L/kg OC | 1.30 | 4.500 | NaN |
21 | Log partition coefficient | PFOS | PFOS Log Koc (WWT) | 3.0400 | log L/kg OC | 2.40 | 4.700 | NaN |
22 | Log partition coefficient | PFBA | PFBA Log Koc (WWT) | 1.8800 | log L/kg OC | 1.30 | 1.880 | NaN |
23 | Log partition coefficient | PFPeA | PFPeA Log Koc (WWT) | 1.3700 | log L/kg OC | NaN | NaN | NaN |
24 | Log partition coefficient | PFHxA | PFHxA Log Koc (WWT) | 1.7700 | log L/kg OC | 1.31 | 2.100 | NaN |
25 | Log partition coefficient | PFHpA | PFHpA Log Koc (WWT) | 1.9700 | log L/kg OC | NaN | 2.190 | NaN |
26 | Log partition coefficient | PFNA | PFNA Log Koc (WWT) | 2.6300 | log L/kg OC | 2.30 | 3.180 | NaN |
27 | Log partition coefficient | PFDA | PFDA Log Koc (WWT) | 3.2400 | log L/kg OC | 2.65 | 3.780 | NaN |
28 | Log partition coefficient | PFBS | PFBS Log Koc (WWT) | 1.5100 | log L/kg OC | NaN | 1.790 | NaN |
29 | Log partition coefficient | PFHxS | PFHxS Log Koc (WWT) | 2.7900 | log L/kg OC | 2.05 | 2.875 | NaN |
Incoming Landfill Leachte to WWT¶
[3]:
IncomingWaste = ps.IncomFlow()
IncomingWaste.set_flow('LFLeachate', 1000)
IncomingWaste.calc()
LFLeachate = IncomingWaste.Inc_flow
LFLeachate.report()
[3]:
Parameter | Unit | Amount | |
---|---|---|---|
0 | Mass flow | kg | 1000 |
1 | Solids flow | kg | 10 |
2 | Moisture flow | kg | 990 |
3 | Volume flow | L | 1000 |
4 | Carbon flow | kg | 5 |
5 | PFOA | μg | 5700 |
6 | PFOS | μg | 90 |
7 | PFBA | μg | 750 |
8 | PFPeA | μg | 680 |
9 | PFHxA | μg | 1650 |
10 | PFHpA | μg | 550 |
11 | PFNA | μg | 50 |
12 | PFDA | μg | 30 |
13 | PFBS | μg | 190 |
14 | PFHxS | μg | 270 |
PFAS balance in WWT¶
[4]:
WWT.calc(Inc_flow=LFLeachate)
WWT.report(normalized=True)
[4]:
Volatilized | DryerExhaust | WWT Effluent | solids | Screen Rejects | |
---|---|---|---|---|---|
PFOA | 0.0 | 0.0 | 80.21 | 19.78 | 0.01 |
PFOS | 0.0 | 0.0 | 37.37 | 62.62 | 0.01 |
PFBA | 0.0 | 0.0 | 88.74 | 11.25 | 0.01 |
PFPeA | 0.0 | 0.0 | 95.48 | 4.51 | 0.01 |
PFHxA | 0.0 | 0.0 | 90.82 | 9.17 | 0.01 |
PFHpA | 0.0 | 0.0 | 86.70 | 13.29 | 0.01 |
PFNA | 0.0 | 0.0 | 60.27 | 39.72 | 0.01 |
PFDA | 0.0 | 0.0 | 27.40 | 72.59 | 0.01 |
PFBS | 0.0 | 0.0 | 94.26 | 5.73 | 0.01 |
PFHxS | 0.0 | 0.0 | 51.35 | 48.64 | 0.01 |
[5]:
WWT.plot_sankey()

[6]:
WWT.plot_sankey_report(margin=.6, gap=.6)

[7]:
A=WWT.products()['WWTEffluent']
Effluent and solids mass flows¶
[8]:
products = WWT.products()
print( """
Effluent volume (Liter) : {}
Screen Rejects mass (kg): {}
RawWWTSoilds mass (kg): {}
DewateredWWTSolids mass (kg): {}
DeriedWWTSolids mass (kg): {}
""".format(products['WWTEffluent'].vol,
products['WWTScreenRejects'].mass,
products['RawWWTSolids'].mass,
products['DewateredWWTSolids'].mass,
products['DriedWWTSolids'].mass))
Effluent volume (Liter) : 988.4007936272117
Screen Rejects mass (kg): 0.2857142857142857
RawWWTSoilds mass (kg): 0.0
DewateredWWTSolids mass (kg): 0
DeriedWWTSolids mass (kg): 3.6033275744680844
Sensitivity to the Mixed liquor suspended solids (MLSS) (Default: 1000 mg/L)¶
[9]:
MLSS = np.linspace(500,10000,30)
PFAS_inEffluent = []
IncomingWaste.set_flow('LFLeachate', 1000)
IncomingWaste.calc()
for i in MLSS:
WWT.InputData.BioTrtmnt['sol_cont']['amount'] = i
WWT.calc(IncomingWaste.Inc_flow)
PFAS_inEffluent.append(round(WWT.report(normalized=True)['WWT Effluent']['PFOA']))
plt.plot(MLSS,PFAS_inEffluent)
plt.xlim(500,10000)
plt.xlabel('Mixed liquor suspended solids (MLSS) (mg/L)')
plt.ylabel('Percent of Incoming PFAS that \n remains in the Effluent (%)')
[9]:
Text(0, 0.5, 'Percent of Incoming PFAS that \n remains in the Effluent (%)')
