USEPA / ElectricityLCI

Creative Commons Zero v1.0 Universal
26 stars 11 forks source link

Addressing the Industrial Cogeneration Problem and Implementing the filter in model_config #232

Open dt-woods opened 8 months ago

dt-woods commented 8 months ago

This is in response to the placeholder found in eia923_generation.py where the industrial co-generation facilities are meant to be filtered from EIA Form 923 data because:

  1. These facilities typically produce two products: heat and electricity and no efforts are made to allocate the fuel demand to just the electricity (i.e., messes with efficiency).
  2. It is assumed that these facilities do not put electricity generated into the grid; therefore, it should not go into the generation mix for consumption

https://github.com/USEPA/ElectricityLCI/blob/2232c41f2cb4fd333ad59c8710aa55906e6a7ed3/electricitylci/eia923_generation.py#L413

A boolean parameter exists in the model_config YAML, filter_non_egrid_emission_on_NAICS, but has not been implemented. The suggested fix is to add the following to the build_generation_data method where the other model_specs filters are located:

if model_specs.filter_non_egrid_emission_on_NAICS:
    # NAICS Code 22 includes all commercial and industrial facilities.
    # EIA Sector numbers 1 and 2 should be just the cogeneration plants.
    final_gen_df = final_gen_df.loc[
        (final_gen_df['NAICS Code'] == '22') & (final_gen_df['EIA Sector Number'].isin(['1','2'])) , :
    ]

The description line in the YAML should read something like the following:

To ensure consistency with eGRID, the model applies a filter to remove 
industrial cogeneration facilities from the EIA Form 923 data based on 
their NAICS code (i.e., code 22: Electricity Utilities and Independent 
Power Producers) and by EIA Sector numbers 1 and 2. This filter is 
designed to reproduce the same power plants that are listed in eGRID.
dt-woods commented 8 months ago

See also #190 and #191