Landfill

[1]:
import PFAS_SAT_ProcessModels as pspd
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

While the model describes a generic landfill, there are in practice four types of landfills (MSW, hazardous waste, C&D waste, ash). Each of these types of landfill includes the same basic processes as illustrated in Figure below and each type may be represented by adjusting default parameters. They may be unlined (e.g., many C&D landfills), have a single liner system (e.g., most MSW landfills), or be double-lined (e.g., hazardous waste landfills). The landfills may or may not have active gas collection and control systems. If there is an active gas control system utilizing a flare or engine, then some fraction of the volatilized or aerosolized PFAS may be destroyed. The PFAS that is not released remains stored in the landfill.

To calculate PFAS release, the disposed PFAS-containing waste material is assumed to be well mixed with the bulk MSW. The area occupied by the disposed waste is estimated based on a default parameter that represents the mass of total waste that can be disposed per unit area. The area occupied by the PFAS-containing waste mixed in with MSW is coupled with the leachate generation rate (volume/area-time) to estimate the volume of leachate produced. The partitioning of PFAS from the solid waste to the aqueous phase is modeled using a liquid-solid partition coefficient normalized to the amount of organic carbon. Model predictions are based on achievement of equilibrium. By default, it is assumed that no volatilization occurs, but a user can enter a fraction of PFAS that is volatilized.

The partition coefficient is used to estimate the concentration of PFAS in the liquid and solids. The concentration in the liquid changes throughout the year as is leached to the leachate collection system (i.e., it is assumed that leaching is uniform throughout the year and continuously removes PFAS from the mixture). The leachate collection efficiency is used to calculate the fraction of leachate that is collected and subsequently treated. The landfill process models in the SAT is designed so that by changing default parameters, a variety of landfill processes can be represented. For example, a C&D landfill without a liner would be modeled with no collection efficiency, all the generated leachate would be released to groundwater. A double-lined hazardous waste landfill could be modeled by increasing the leachate collection efficiency.

Drawing

Assumptions and Limitations:

  1. The organic carbon-normalized partition coefficient assumes that the organic carbon in different materials generally have the PFAS sorption capacity. However, material-specific coefficients were developed for activated carbon,

  2. Volatilization is assumed to be zero by default due to a lack of data. However, the user may assign a fraction of the PFAS to be volatilized.

  3. Future work is also required to implement a dynamic (i.e., non-equilibrium) model to account for changes in the organic C content of over time as landfilled materials decompose, and the effectiveness of cover system improves.

  4. PFAS release is based on 1 year. A longer time horizon would result in additional PFAS release.

Input Parameters for Landfill model

[2]:
Landfill = pspd.Landfill()
Landfill.InputData.Data[['Category','Dictonary_Name','Parameter Name', 'Parameter Description', 'amount', 'unit','Reference']]
[2]:
Category Dictonary_Name Parameter Name Parameter Description amount unit Reference
0 LF MSW Properties LFMSW frac_of_msw Fraction of PFAS containing waste mixed with MSW 0.010 fraction
1 LF MSW Properties LFMSW bulk_dens MSW bulk density - wet 890.000 kg/m3
2 LF MSW Properties LFMSW ts_cont Total solids content of the bulk MSW in the landfill - wet 0.746 fraction wet weight
3 LF MSW Properties LFMSW C_cont MSW organic C content -dry 0.331 fraction TS
4 LF Water Balance Water_Blnc leach_gpad Leachate generation rate per area 500.000 gal/acre-day
5 LF Water Balance Water_Blnc is_leach_col Is leachate collected 1.000 1:TRUE/0:FALSE
6 LF Water Balance Water_Blnc frac_leach_col Fraction of leachate collected 0.998 fraction
7 Volatilization Volatilization frac_vol_loss Fraction of PFAS lost to volatilization 0.000 fraction
8 LF Parameters LF lf_ton_area Landfill capacity per acre 100000.000 Mg/acre
9 Log partition coefficient LogPartCoef PFOA PFOA Log Koc (Landfill) 2.190 log L/kg OC [2,3,4,5]
10 Log partition coefficient LogPartCoef PFOS PFOS Log Koc (Landfill) 3.040 log L/kg OC [2,3,4,5]
11 Log partition coefficient LogPartCoef PFBA PFBA Log Koc (Landfill) 1.880 log L/kg OC [2,3,4,5]
12 Log partition coefficient LogPartCoef PFPeA PFPeA Log Koc (Landfill) 1.370 log L/kg OC [2,3,4,5]
13 Log partition coefficient LogPartCoef PFHxA PFHxA Log Koc (Landfill) 1.770 log L/kg OC [2,3,4,5]
14 Log partition coefficient LogPartCoef PFHpA PFHpA Log Koc (Landfill) 1.970 log L/kg OC [2,3,4,5]
15 Log partition coefficient LogPartCoef PFNA PFNA Log Koc (Landfill) 2.630 log L/kg OC [2,3,4,5]
16 Log partition coefficient LogPartCoef PFDA PFDA Log Koc (Landfill) 3.240 log L/kg OC [2,3,4,5]
17 Log partition coefficient LogPartCoef PFBS PFBS Log Koc (Landfill) 1.510 log L/kg OC [2,3,4,5]
18 Log partition coefficient LogPartCoef PFHxS PFHxS Log Koc (Landfill) 2.790 log L/kg OC [2,3,4,5]
19 Log partition coefficient for GAC LogPartCoef_GAC PFOA PFOA Log K (GAC) 4.870 log L/kg
20 Log partition coefficient for GAC LogPartCoef_GAC PFOS PFOS Log K (GAC) 5.080 log L/kg
21 Log partition coefficient for GAC LogPartCoef_GAC PFBA PFBA Log K (GAC) 4.490 log L/kg
22 Log partition coefficient for GAC LogPartCoef_GAC PFPeA PFPeA Log K (GAC) 4.590 log L/kg
23 Log partition coefficient for GAC LogPartCoef_GAC PFHxA PFHxA Log K (GAC) 4.680 log L/kg
24 Log partition coefficient for GAC LogPartCoef_GAC PFHpA PFHpA Log K (GAC) 4.780 log L/kg
25 Log partition coefficient for GAC LogPartCoef_GAC PFNA PFNA Log K (GAC) 4.970 log L/kg
26 Log partition coefficient for GAC LogPartCoef_GAC PFDA PFDA Log K (GAC) 5.060 log L/kg
27 Log partition coefficient for GAC LogPartCoef_GAC PFBS PFBS Log K (GAC) 4.680 log L/kg
28 Log partition coefficient for GAC LogPartCoef_GAC PFHxS PFHxS Log K (GAC) 4.880 log L/kg
29 Log partition coefficient for Spent IER LogPartCoef_SpentIER PFOA PFOA Log K (SpentIER) 5.660 log L/kg
30 Log partition coefficient for Spent IER LogPartCoef_SpentIER PFOS PFOS Log K (SpentIER) 7.050 log L/kg
31 Log partition coefficient for Spent IER LogPartCoef_SpentIER PFBA PFBA Log K (SpentIER) 4.380 log L/kg
32 Log partition coefficient for Spent IER LogPartCoef_SpentIER PFPeA PFPeA Log K (SpentIER) 4.780 log L/kg
33 Log partition coefficient for Spent IER LogPartCoef_SpentIER PFHxA PFHxA Log K (SpentIER) 5.150 log L/kg
34 Log partition coefficient for Spent IER LogPartCoef_SpentIER PFHpA PFHpA Log K (SpentIER) 5.440 log L/kg
35 Log partition coefficient for Spent IER LogPartCoef_SpentIER PFNA PFNA Log K (SpentIER) 5.870 log L/kg
36 Log partition coefficient for Spent IER LogPartCoef_SpentIER PFDA PFDA Log K (SpentIER) 6.250 log L/kg
37 Log partition coefficient for Spent IER LogPartCoef_SpentIER PFBS PFBS Log K (SpentIER) 5.870 log L/kg
38 Log partition coefficient for Spent IER LogPartCoef_SpentIER PFHxS PFHxS Log K (SpentIER) 6.460 log L/kg

Incoming Waste to landfill

Here are the properties of the incoming waste to landfill.

[3]:
IncomingWaste = pspd.IncomFlow()
IncomingWaste.set_flow('MSW', 1000)
IncomingWaste.calc()
MSW = IncomingWaste.Inc_flow
MSW.report()
[3]:
Parameter Unit Amount
0 Mass flow kg 1000
1 Solids flow kg 254.0
2 Moisture flow kg 746.0
3 VS flow kg 134.62
4 Carbon flow kg 84.074
5 PFOA μg 1070.0
6 PFOS μg 840.0
7 PFBA μg 0.0
8 PFPeA μg 0.0
9 PFHxA μg 0.0
10 PFHpA μg 0.0
11 PFNA μg 0.0
12 PFDA μg 0.0
13 PFBS μg 0.0
14 PFHxS μg 0.0

PFAS balance in landfill

  • A substantial fraction of PFAS is stored in landfill for longterm.

[4]:
Landfill.calc(Inc_flow=MSW)
Landfill.report(normalized=True)
[4]:
Volatilized Collected Leachate Fugitive Leachate Remaining in Landfill
PFOA 0.0 0.0180 0.0 99.9819
PFOS 0.0 0.0026 0.0 99.9974
PFBA NaN NaN NaN NaN
PFPeA NaN NaN NaN NaN
PFHxA NaN NaN NaN NaN
PFHpA NaN NaN NaN NaN
PFNA NaN NaN NaN NaN
PFDA NaN NaN NaN NaN
PFBS NaN NaN NaN NaN
PFHxS NaN NaN NaN NaN
[5]:
Landfill.plot_sankey()
../_images/Notebooks_Landfill_9_0.png
[6]:
Landfill.plot_sankey_report(margin=.5, ft=6)
../_images/Notebooks_Landfill_10_0.png

Sensitivity to Leachate generation rate per area (default: 250 gal/acre-day)

[7]:
Landfill = ps.Landfill()
IncomingWaste = ps.IncomFlow()

LF_leach = np.linspace(100,50000,20)
PFAS_stored = []
IncomingWaste.set_flow('MSW', 1000)
IncomingWaste.calc()
for i in LF_leach:
    Landfill.InputData.Water_Blnc['leach_gpad']['amount'] = i
    Landfill.calc(IncomingWaste.Inc_flow)
    PFAS_stored.append(Landfill.LF_storage.PFAS['PFOA']/Landfill.Inc_flow.PFAS['PFOA'] * 100)
plt.plot(LF_leach,PFAS_stored)
plt.ylim(98,101)
plt.xlim(100,50000)
plt.xlabel('Leachate generation rate per area (gal/acre-day)')
plt.ylabel('Percent of Incoming PFAS that \n remains in the landfill (%)')
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-7-bb67ac9736d4> in <module>
----> 1 Landfill = ps.Landfill()
      2 IncomingWaste = ps.IncomFlow()
      3
      4 LF_leach = np.linspace(100,50000,20)
      5 PFAS_stored = []

NameError: name 'ps' is not defined