catalyst-cooperative / pudl

The Public Utility Data Liberation Project provides analysis-ready energy system data to climate advocates, researchers, policymakers, and journalists.
https://catalyst.coop/pudl
MIT License
456 stars 105 forks source link

Make analysis module for CEMS by generation fuel #1923

Open aesharpe opened 1 year ago

aesharpe commented 1 year ago

This module will take the gen_fuel_by_generator_eia923 and gen_fuel_by_generator_energy_source_eia923 output tables and assign CEMS emissions using the epacamd-eia crosswalk and known emissions intensity factors for weighted fuel-based allocation.

It's important to note that in order to get accurate emissions aggregates we still need to:

Open Grid Emissions has collected information about emissions factors for co2, nox, and so2 (as well as some others) that we can use. The co2 emissions factor is the most strait forward using energy_source_code and co2 tons per mmtbu. The nox and so2 emissions factors are a bit more complicated an involve boiler type. This information is from the EIA860 6_2_EnviroEquipYyyyy which we have yet to integrate into PUDL (#1775 ).

For the purpose of this issue, we'll start by just integrating co2 emissions factors.

aesharpe commented 1 year ago

QUESTION: This issue entails merging CEMS data with an output table. To my knowledge, we've never included CEMS in an output table before. How should we go about doing this?

One potential place to start is creating the CEMS table I need (CEMS aggregated by year, plant, and emissions_unit_id) in the current pudl.output.epacems module and then importing it directly into the pudl.analysis.allocate_cems_to_eia_gens module I'm creating.

TrentonBush commented 1 year ago

Do you think this aggregated CEMS data would be useful for many people's analysis or is it more specific to some particular work? I interpret output modules as being for reusable outputs that are common building blocks for many people's analysis. If the CEMS data you need is specific to this analysis, I'd just make it in the analysis module rather than making a new output.