The apportionment process produces the unit-level emissions data used in CAMPD by doing the following:
Flattens the HI, SO2 Mass, NOx Mass, NOx Rate and CO2 Mass values reported in the ECMPS Derived Hourly Value table and the CO2 Mass values reported in the Daily Emission table into hourly rows containing each of the values, Operating Time, Load, SO2 and CO2 rates, and measured information for each of the parameters.
Apportions values measured at stacks or pipes to the connected units
The ECMPS 2.0 process should generally follow the ECMPS 1.0 process, and utilize the 1.0 details.
The ECMPS 1.0 apporitonment process involves the following apportionment tables in CAMDECMPS (CAMDBSP) and CAMDDMW (CAMDPUB):
MATS Unit Hourly: CAMDECMPS: MATS_UNIT_HOUR CAMDDMW: HOUR_UNIT_MATS_DATA
Notes:
The process performs the apportionment using the CAMDECMPS apportionment tables (actually the ECMPS Client version of the tables), and then moves the data to the CAMDDMW tables.
The CAMDECMPS SO2, NOx and CO2 masses are in pounds. For CAMDDMW, the CO2 mass is in pounds, but the SO2 and NOx masses are in tons, and additional columns exist that contain the SO2 and NOx pound values. The summing of mass values should occur using pounds values, not tons.
CAMPD currently only contains the "unit" version of the apportionment tables. However, CAMD plans to implement the "monitor" version of the tables.
MATS data are not aggregated to day, month nor quarter values.
CAMDDMW also includes the following apportionment tables:
ANNUAL_MONITOR_DATA
ANNUAL_UNIT_DATA
OZONE_MONITOR_DATA
OZONE_UNIT_DATA
The following Reported Emission tables in CAMDECMPS contain the source data for apportionment:
HRLY_OP_DATA: Contains the operating time and load for each location and hour.
DERIVED_HRLY_VALUE: Contains the heat input, SO2 Mass, NOx Mass, NOx Rate, and CO2 Mass rows for each location and hour.
DAILY_EMISSION: Contains daily CO2 emissions for a location. For apportionment, the daily emissions are divided equally for the operating hours for the location and day.
The ECMPS 1.0 version involves the following steps:
Pull the Reported Emissions data from HRLY_OP_DATA, DERIVED_HRLY_VALUE and DAILY_EMISSION tables, flattent the data into hourly rows, and store the row in MONITOR_HOUR.
For monitoring plans (MP) that contain a single unit, populate the UNIT_HOUR row for the unit and hour from the MONITOR_HOUR row for the unit and hour.
For other MP, populate the UNIT_HOUR for the unit nad hour based on the MONITOR_HOUR rows for all locations in the MP, and the connections between the locations in the MP.
Sum MONITOR_HOUR rows to produce MONITOR_DAY rows, MONITOR_DAY to produce MONITOR_MONTH rows, and MONITOR_MONTH to produce MONITOR_QUARTER rows.
Sum UNIT_HOUR rows to produce UNIT_DAY rows, UNIT_DAY to produce UNIT_MONTH rows, and UNIT_MONTH to produce UNIT_QUARTER rows.
Populate CAMDDMW tables from their matching CAMDECMPS tables.
Create or replace ANNUAL_MONITOR_DATA and ANNUAL_UNIT_DATA rows by summing QUARTER_MONITOR_DATA and QUARTER_UNIT_DATA rows respectively.
Create or replace OZONE_MONITOR_DATA and OZONE_UNIT_DATA rows by summing MONTH_MONITOR_DATA and MONTH_UNIT_DATA rows respectively.
Complex Apportionment:
Most apportionment occurs automatically based on the MP configuration. However, complex configurations and some changing configurations require formulas to determine how to apportion data. Those formulas are stored in the following tables on both the ECMPS 1.0 Host (CAMDECMPSAUX) and Client (ECMPS).
APPORTIONMENT: Parent table that indicates the MP, begin quarter, and if it exists end quarter for the apportionment formulas.
APPORTIONMENT_RANGE: Child table used to create separate formulas for distinct ranges for a monitoring plan. Typically used when formulas are needed for a MP with configuration changes.
APPORTIONMENT_DATA: Grandchild table that stores actual apportionment formulas. Multiple rows may exist for an APPORTIONMENT_RANGE parent. When that occurs the rows are ordered and all but the last contains a condition to determine whether it is the row used for the apportionment. This usually provides the ability to apply different formulas based on which locations are operating. Additionally, APPORTIONMENT_DATA allows the ability to indicate when a stack is a duct contributing to another stack for which the emissions should be reduced before being apportioned.
Key ECMPS 1.0 Non-Table Objects
Application : DM Project (C#): Controls the apportionment process and performs the actual apportionment.
Application : DM.cUpdateEmissions Class (C#): Calls delegates needed to interact with the database or methods similating the database for testing purposes.
Application : EmissionsReport.cUpdateEmissionsDb Class (C#): Links the ECMPS.DB.cUpdateEmissions object to the supporting database objects and tables.
Application : EmissionsReport.cUpdateEmissionsDb.UpdateUnitHour Method (C#): Bulk loads the apportioned hourly data into the MONITOR_HOUR and MATS_MONITOR_HOUR tables.
Database : DmEm.UpdateInit: Loads "monitor" apportionment tables and returns sets of data needed by the check engine to apportion data.
Database : DmEm.GatherMonitorHour: Gathers hourly monitor data for the MONITOR_HOUR table.
Database : DmEm.GatherMatsMonitorHour Gathers hourly monitor data for the MATS_MONITOR_HOUR table.
Note that all apportionment related ECMPS 1.0 database objects are in the "DmEm" schema.
Needed Decisions:
Determine whether the Check Engine DM Emission process should utilize a set of DM tables to perform the re-calculation process, or will use the target CAMDDMW tables directly. Note that the NOXM
Determine whether the CAMPD emissions, whether in CAMDECMPS, CAMDDMW, or both should be deleted when an emission report is resubmitted, or just when the CAMPD emissions are reproduced.
Ensure that existing DM emissions are cleared for a submitted emission report, This could occur as part of the DM Emissions job.
Overview
The apportionment process produces the unit-level emissions data used in CAMPD by doing the following:
The ECMPS 2.0 process should generally follow the ECMPS 1.0 process, and utilize the 1.0 details.
The ECMPS 1.0 apporitonment process involves the following apportionment tables in CAMDECMPS (CAMDBSP) and CAMDDMW (CAMDPUB):
Notes:
CAMDDMW also includes the following apportionment tables:
The following Reported Emission tables in CAMDECMPS contain the source data for apportionment:
The ECMPS 1.0 version involves the following steps:
Complex Apportionment:
Most apportionment occurs automatically based on the MP configuration. However, complex configurations and some changing configurations require formulas to determine how to apportion data. Those formulas are stored in the following tables on both the ECMPS 1.0 Host (CAMDECMPSAUX) and Client (ECMPS).
Key ECMPS 1.0 Non-Table Objects
Note that all apportionment related ECMPS 1.0 database objects are in the "DmEm" schema.
Needed Decisions: