Composting

[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)
import warnings
warnings.filterwarnings('ignore')

Model document

Composting can accept specific fractions of MSW including food, yard, and some paper wastes. It is also capable of treating dried and stabilized WWT solids. The primary purpose of composting is to produce a stabilized organic product that can be used as a soil amendment to enhance water retention, carbon and nutrient content, and erosion control among other potential benefits. In addition to finished compost, composting systems also produce residual solid materials from pre- and post-screening. Those materials can be combusted or landfilled. Compost also may produce leachate that needs to be managed through wastewater treatment. It is also possible that PFAS are volatilized during aerobic composting due to the elevated temperatures and stripping from active aeration, but there is currently no data on this potential pathway.

In the composting process model, feedstocks (e.g., WWT solids or food waste) are mixed with amendments (wood chips by default) to increase porosity to allow air flow through the system. Active composting may be under cover or open to the atmosphere. In the latter case, there will be contact water that may contain PFAS that will need to be managed.

Model predictions are based on achievement of equilibrium. 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 PFAS leaches through the compost piles (i.e., it is assumed that annual precipitation is uniform throughout the year and continuously removes PFAS from the mixture). The model then calculates a fraction of precipitation that becomes contact water. The contact water can either be collected and managed or be released to surface or ground- water depending on the composting process and applicable regulations. If active composting is under a cover, then no contact water is included. The PFAS that is not removed in the contact water remains in the compost. By default, the compost is cured after active composting. The curing model is the same as the active composting model, except it is not covered and contact water is not managed. Any PFAS that does not leave the curing piles through leaching or run-off remains in the finished compost that will be either land applied or landfilled.

The behavior of the finished compost in a landfill and land application process are described in their respective sections. There are several different compost processes (e.g., windrows, static piles, in-vessel). The compost process model in the SAT framework is designed so that by changing default parameters, any compost process can be represented.

Assumptions and Limitations

  1. Organic carbon partitioning coefficients determined from soils/sediments are used for compost partitioning.

  2. Wood chips are currently the only amendment that is built into the material flow properties.

  3. We assume that the mass of solid loss per carbon loss is similar both for active and curing composting stages.

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

  5. Future work is required to implement a dynamic (i.e., non-equilibrium) model to account for changes in the organic C content over time as composted materials decompose, and to account for episodic precipitation events.

  6. We do not consider the possible conversion of “precursor” compounds to commonly measured PFAAs.

Input Parameters for Composting model

[2]:
Composting = ps.Comp()
Composting.InputData.Data[['Category','Dictonary_Name','Parameter Name', 'Parameter Description', 'amount', 'unit','Reference']]
[2]:
Category Dictonary_Name Parameter Name Parameter Description amount unit Reference
0 Log partition coefficient LogPartCoef PFOA PFOA Log Koc (Composting) 2.19 log L/kg OC [2,3,4,5]
1 Log partition coefficient LogPartCoef PFOS PFOS Log Koc (Composting) 3.04 log L/kg OC [2,3,4,5]
2 Log partition coefficient LogPartCoef PFBA PFBA Log Koc (Composting) 1.88 log L/kg OC [2,3,4,5]
3 Log partition coefficient LogPartCoef PFPeA PFPeA Log Koc (Composting) 1.37 log L/kg OC [2,3,4,5]
4 Log partition coefficient LogPartCoef PFHxA PFHxA Log Koc (Composting) 1.77 log L/kg OC [2,3,4,5]
5 Log partition coefficient LogPartCoef PFHpA PFHpA Log Koc (Composting) 1.97 log L/kg OC [2,3,4,5]
6 Log partition coefficient LogPartCoef PFNA PFNA Log Koc (Composting) 2.63 log L/kg OC [2,3,4,5]
7 Log partition coefficient LogPartCoef PFDA PFDA Log Koc (Composting) 3.24 log L/kg OC [2,3,4,5]
8 Log partition coefficient LogPartCoef PFBS PFBS Log Koc (Composting) 1.51 log L/kg OC [2,3,4,5]
9 Log partition coefficient LogPartCoef PFHxS PFHxS Log Koc (Composting) 2.79 log L/kg OC [2,3,4,5]
10 Amendment Material Properties AmndProp mass_ratio Mass of amendment to mass of feedstock 0.70 kg TS/kg TS [62]
11 Amendment Material Properties AmndProp ts_cont TS content of amendmente _wet 0.55 fraction wet weight [63]
12 Amendment Material Properties AmndProp C_cont Organic C content - dry 0.58 fraction TS [48]
13 Amendment PFAS Concentration AmndPFAS PFOA PFOA concentration - dry mass 0.00 10e-6g/kg NaN
14 Amendment PFAS Concentration AmndPFAS PFOS PFOS concentration - dry mass 0.00 10e-6g/kg NaN
15 Amendment PFAS Concentration AmndPFAS PFBA PFBA concentration - dry mass 0.00 10e-6g/kg NaN
16 Amendment PFAS Concentration AmndPFAS PFPeA PFPeA concentration - dry mass 0.00 10e-6g/kg NaN
17 Amendment PFAS Concentration AmndPFAS PFHxA PFHxA concentration - dry mass 0.00 10e-6g/kg NaN
18 Amendment PFAS Concentration AmndPFAS PFHpA PFHpA concentration - dry mass 0.00 10e-6g/kg NaN
19 Amendment PFAS Concentration AmndPFAS PFNA PFNA concentration - dry mass 0.00 10e-6g/kg NaN
20 Amendment PFAS Concentration AmndPFAS PFDA PFDA concentration - dry mass 0.00 10e-6g/kg NaN
21 Amendment PFAS Concentration AmndPFAS PFBS PFBS concentration - dry mass 0.00 10e-6g/kg NaN
22 Amendment PFAS Concentration AmndPFAS PFHxS PFHxS concentration - dry mass 0.00 10e-6g/kg NaN
23 Active composting Input AComp is_covered Is active composting (AC) covered? 0.00 1:TRUE,0:FALSE NaN
24 Active composting Input AComp bulk_dens Wet bulk density (AC pile) 530.00 kg/m3 [48]
25 Active composting Input AComp wind_ht Windrow height (AC pile) 2.50 m [48]
26 Active composting Input AComp wind_wid Windrow width (AC pile) 4.50 m [48]
27 Active composting Input AComp frac_C_lost Fraction of organic C lost during AC 0.50 kg C loss/kg C [22]
28 Active composting Input AComp ts_end Total solids content at the end of AC 0.55 kg TS/kg [48]
29 Active composting Input AComp frac_sol_to_cw Fraction of solids in contact water (AC) 0.00 fraction NaN
30 Active composting Input AComp sol_loss_per_C_loss Total solids loss per loss per C loss (AC) 2.00 kg TS/kg C [64,24]
31 Active composting Input AComp is_cw_col Is AC contact water collected? 1.00 1:TRUE,0:FALSE NaN
32 Active composting Input AComp frac_cw_col Fraction contact water collection during AC 0.98 fraction NaN
33 Active composting Input AComp ac_time Activate composting time 70.00 days [48]
34 Curing Input Curing frac_C_lost Fraction of organic C lost during curing 0.10 kg C/kg C [42]
35 Curing Input Curing ts_end Total solids content at the end of curing 0.65 kg TS/kg [42]
36 Curing Input Curing bulk_dens Wet bulk density of curing pile 530.00 kg/m3 [48]
37 Curing Input Curing wind_ht Windrow height of curing pile 2.00 m [48]
38 Curing Input Curing wind_wid Windrow width of curing pile 4.00 m [48]
39 Curing Input Curing sol_loss_per_C_loss Total solids loss per loss per C loss (Curing) 2.00 kg TS/kg C NaN
40 Curing Input Curing curing_time Curing composting time 30.00 days [48]
41 Precipitation Data Precip ann_precip Annual precipitation rate 1.13 m/yr NaN
42 Volatilization Volatilization frac_vol_loss Fraction of PFAS lost to volatilization 0.00 NaN NaN
43 Screen Screen frac_rmvd Fraction of incoming feedstock removed by screen 0.00 fraction NaN

Incoming Dewatered WWT Solids to Composting

[3]:
IncominWaste = ps.IncomFlow()
IncominWaste.set_flow('Dewatered WWT Solids', 1000)
IncominWaste.calc()
DewateredWWTSolids = IncominWaste.Inc_flow
DewateredWWTSolids.report()
[3]:
Parameter Unit Amount
0 Mass flow kg 1000
1 Solids flow kg 200
2 Moisture flow kg 800
3 VS flow kg 120
4 Carbon flow kg 76
5 PFOA μg 934.565
6 PFOS μg 3678.93
7 PFBA μg 146.226
8 PFPeA μg 365.103
9 PFHxA μg 511.518
10 PFHpA μg 88.188
11 PFNA μg 373.149
12 PFDA μg 1552.18
13 PFBS μg 125.018
14 PFHxS μg 107.265

PFAS balance in Composting

[4]:
Composting.calc(Inc_flow=DewateredWWTSolids)
Composting.report(normalized=True)
[4]:
Volatilized Compost Contact water Collected Contact water Compost Residuals
PFOA 0.0 97.92 0.50 1.58 0.0
PFOS 0.0 99.70 0.07 0.23 0.0
PFBA 0.0 95.94 0.98 3.08 0.0
PFPeA 0.0 88.83 2.81 8.36 0.0
PFHxA 0.0 94.88 1.24 3.88 0.0
PFHpA 0.0 96.65 0.81 2.55 0.0
PFNA 0.0 99.23 0.18 0.59 0.0
PFDA 0.0 99.81 0.05 0.15 0.0
PFBS 0.0 91.39 2.13 6.48 0.0
PFHxS 0.0 99.46 0.13 0.41 0.0
[5]:
Composting.plot_sankey(margin=1.7, offset=.4, gap=0.8)
../_images/Notebooks_Composting_9_0.png

Sankey Diagrams for PFOA and PFOS

[6]:
Composting.plot_sankey_report(margin=1, offset=.4, gap=0.8)
../_images/Notebooks_Composting_11_0.png

Sensitivity to precipitation

[7]:
precip = np.linspace(0,10,30)
frac_remain = []
for i in precip:
    Composting.InputData.Precip['ann_precip']['amount'] = i
    Composting.calc(Inc_flow=DewateredWWTSolids)
    frac_remain.append(sum(Composting.report()['Compost'])/sum(DewateredWWTSolids.PFAS))

plt.plot(precip,frac_remain)
plt.xlabel('Annual precipitation rate (m)')
plt.ylabel('Percent of Incoming PFAS that \n remains in the Compost (%)')
[7]:
Text(0, 0.5, 'Percent of Incoming PFAS that \n remains in the Compost (%)')
../_images/Notebooks_Composting_13_1.png