Thermal Treatment

[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

Combustion systems include mass burn incinerators for MSW, hazardous solid waste, and medical waste, as well as cement kilns. The combustion process model in the SAT framework was designed so that by changing default parameters, a variety of conventional and emerging thermal treatment processes can be represented. In addition to MSW incinerators, other potential thermal processes include gasification/pyrolysis systems, and thermomechanochemical systems, which may include mechanical and chemical processing prior to combustion. To begin, the incoming materials are partially or fully combusted. During combustion, a fraction of the PFAS may be volatilized and/or destroyed, but data on destruction and release of volatilized PFAS and/or products of incomplete combustion are limited. The volatilized compounds may be transformed into chlorofluorocarbons, which deplete stratospheric ozone and are potent greenhouse gases. The incineration process produces combustion residuals that may include bottom ash, fly ash, and air pollution control (APC) residues. The mass of PFAS flows are modeled using a destruction and removal efficiency (DRE), and fraction of the DRE that remains in the residual. Based on these inputs, the model calculates the PFAS destroyed, released to the air and remaining in the ash. The ash is then sent to landfill.

Drawing

Assumptions and Limitations

  1. The model assumes a single DRE and fraction remaining on the residual for each material and type of PFAS. Data is relatively limited, but this can be readily updated as more data becomes available.

  2. The model assumes there is a single ash stream with a common set of parameters.

  3. The model assumes a single VS destruction efficiency, but this could vary by material.

  4. The model does not consider transformations of PFAS.

Input Parameters for Thermal Treatment model

[2]:
ThermalTreatment = pspd.ThermalTreatment()
ThermalTreatment.InputData.Data[['Category','Parameter Name', 'Parameter Description', 'amount', 'unit','Reference']]
[2]:
Category Parameter Name Parameter Description amount unit Reference
0 Total destruction and removal efficiency PFOA DRE of PFOA 0.97 fraction
1 Total destruction and removal efficiency PFOS DRE of PFOS 0.97 fraction
2 Total destruction and removal efficiency PFBA DRE of PFBA 0.97 fraction
3 Total destruction and removal efficiency PFPeA DRE of PFPeA 0.97 fraction
4 Total destruction and removal efficiency PFHxA DRE of PFHxA 0.97 fraction
5 Total destruction and removal efficiency PFHpA DRE of PFHpA 0.97 fraction
6 Total destruction and removal efficiency PFNA DRE of PFNA 0.97 fraction
7 Total destruction and removal efficiency PFDA DRE of PFDA 0.97 fraction
8 Total destruction and removal efficiency PFBS DRE of PFBS 0.97 fraction
9 Total destruction and removal efficiency PFHxS DRE of PFHxS 0.97 fraction
10 Fraction of not destroyed and removed that remains in residuals PFOA Fraction of PFOA remained in residuals 0.33 fraction
11 Fraction of not destroyed and removed that remains in residuals PFOS Fraction of PFOS remained in residuals 0.33 fraction
12 Fraction of not destroyed and removed that remains in residuals PFBA Fraction of PFBA remained in residuals 0.33 fraction
13 Fraction of not destroyed and removed that remains in residuals PFPeA Fraction of PFPeA remained in residuals 0.33 fraction
14 Fraction of not destroyed and removed that remains in residuals PFHxA Fraction of PFHxA remained in residuals 0.33 fraction
15 Fraction of not destroyed and removed that remains in residuals PFHpA Fraction of PFHpA remained in residuals 0.33 fraction
16 Fraction of not destroyed and removed that remains in residuals PFNA Fraction of PFNA remained in residuals 0.33 fraction
17 Fraction of not destroyed and removed that remains in residuals PFDA Fraction of PFDA remained in residuals 0.33 fraction
18 Fraction of not destroyed and removed that remains in residuals PFBS Fraction of PFBS remained in residuals 0.33 fraction
19 Fraction of not destroyed and removed that remains in residuals PFHxS Fraction of PFHxS remained in residuals 0.33 fraction
20 Combustion parameters frac_vs_to_res Fraction of incoming Volatile Solids to Combustion Residuals 0.05 fraction
21 Combustion parameters res_ts_cont Solids content of residuals 0.85 fraction

Incoming MSW to Thermal Treatment

[3]:
IncominWaste = pspd.IncomFlow()
IncominWaste.set_flow('MSW', 1000)
IncominWaste.calc()
MSW = IncominWaste.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 Thermal Treatment

[4]:
ThermalTreatment.calc(Inc_flow=MSW)
ThermalTreatment.report(normalized=True)
[4]:
Air Emission Combustion Residuals Destructed
PFOA 2.01 0.99 97.0
PFOS 2.01 0.99 97.0
PFBA NaN NaN NaN
PFPeA NaN NaN NaN
PFHxA NaN NaN NaN
PFHpA NaN NaN NaN
PFNA NaN NaN NaN
PFDA NaN NaN NaN
PFBS NaN NaN NaN
PFHxS NaN NaN NaN
[5]:
ThermalTreatment.plot_sankey()
../_images/Notebooks_ThermalTreatment_9_0.png
[6]:
ThermalTreatment.plot_sankey_report(margin=.5, gap=.3)
../_images/Notebooks_ThermalTreatment_10_0.png