6.2.7. PTHOUR: Point source hour-specific emissions

6.2.7.1. Date range setting
6.2.7.2. CEM hour-specific format
6.2.7.3. FF10 hour-specific format
6.2.7.4. EMS-95 Format and EMS-95 Wider Format

The PTHOUR file is the input point-source inventory file for hour-specific data and profiles. The file must be a list file (see Section 6.2.1.1, “Inventory list files” and the files listed in the PTHOUR file must be in Continuous Emissions Monitoring (CEM) format when processing hourly CEM inventory data files with an format identifier (#CEM) or the format can be specified in the PTHOUR list file (#LIST CEM). In addition, these files can have a #COUNTRY entry to set the country code (see Section 6.2.1.4, “Header records”. The default country code is 0, which corresponds to the United States in the default COSTCY file.

6.2.7.1. Date range setting

The PTHOUR file may optionally contain a packet to control the range of dates for which Smkinven will read data. When this feature is needed, the following entry should appear on the first line of the PTHOUR file.

DATERANGE MMDD(start) MMDD(end)

where MMDD is the two-digit month and day of the month at the start and end of the period of interest. For example, to request July 10th through 12th, the first line of the file should read:

DATERANGE 0710 0712

The year is implied by the data themselves; note that the files can only contain data for a single year. As an alternative to using the DATERANGE packet, you can manually break the year up into smaller periods in separate files, and only list the files of interest in the PTHOUR file. Note that reading in the whole year of data and extracting just a few days will take much more time than manually editing the file to contain just the days of interest. Also note that if you choose the manual editing option, you must select days that fully cover the modeling episode after accounting for time zone differences between the facility’s time zone and the modeling time zone (set by the OUTZONE option).

6.2.7.2. CEM hour-specific format

SMOKE uses the CEM ORIS ID and Boiler ID fields to match sources in the CEM hour-specific inventory to those in the annual inventory. Note that the CEM data hours are in standard local time (no daylight saving time adjustment). The format of the CEM hour-specific data is shown in Table 6.22, “CEM Format for individual hour-specific data files”.

Table 6.22. CEM Format for individual hour-specific data files

Position Name Type Description
1 ORISID Char (6) DOE Plant Identification Code (required)
2 BLRID Char (6) Boiler Identification Code (required)
3 YYMMDD Int Date of data in YYMMDD format (required)
4 HOUR Integer Hour value from 0 to 23
5 NOXMASS Real Nitrogen oxide emissions (lb/hr) (required)
6 SO2MASS Real Sulfur dioxide emissions (lb/hr) (required)
7 NOXRATE Real Nitrogen oxide emissions rate (lb/MMBtu) (not used by SMOKE)
8 OPTIME Real Fraction of hour unit was operating (optional)
9 GLOAD Real Gross load (MW) (required)
10 SLOAD Real Steam load (1000 lbs/hr) (required)
11 HTINPUT Real Heat input (mmBtu) (required)
12 HTINPUTMEASURE Character(2) Code number indicating measured or substituted, not used by SMOKE.
13 SO2MEASURE Character(2) Code number indicating measured or substituted, not used by SMOKE.
14 NOXMMEASURE Character(2) Code number indicating measured or substituted, not used by SMOKE.
15 NOXRMEASURE Character(2) Code number indicating measured or substituted, not used by SMOKE.
16 UNITFLOW Real Flow rate (ft3/sec) for the Boiler Unit (optional; must be present for all records or not any records – not yet used by SMOKE)

The code numbers used in columns 12 through 15 have the following meanings:

  • 01 = 'Measured'
  • 02 = 'Calculated'
  • 03 = 'Substitute'
  • 04 = 'Measured and Substitute'
  • 97 = 'Not Applicable'
  • 98 = 'Undetermined'
  • 99 = 'Unknown Code'

6.2.7.3. FF10 hour-specific format

This FF10 format uses the header described in Section 6.2.1.4, “Header records”.

The user specifies the data provided using this command in the header: FF10_HOURLY_POINT.

Sample header records for hourly point sources are shown below:
#FORMAT=FF10_HOURLY_POINT
#COUNTRY  US
#YEAR     year of inventory, e.g. 2008
#DESC     Point Hourly Source Inventory
#DESC     FF10 Point Hourly format

Table 6.23. FF10 Format for individual point hour-specific data files

Position Name Type Description
1 COUNTRY Char(3) Country code: e.g., US (required)
2 FIPS Char(5) FIPS code for state and county (required; example 037001)
3 TRIBAL_CODE Char(3) Tribal code (optional; recommended)
4 FACILITY_ID Char(20) Facility Identification Code (required; same as the Plant ID in the ORL format)
5 UNIT_ID Char(20) Unit Identification Code (required; same as the Point ID in the ORL format)
6 REL_POINT_ID Char(20) Release Point Identification Code (required; same as the Stack ID in the ORL format)
7 PROCESS_ID Char(20) Process Identification Code (recommended; same as the Segment ID in the ORL format)
8 SCC Char(20) SCC (required)
9 POLID Char(16) Pollutant Code (required)
10 OP_TYPE_CD Char(20) Operating type code for startup/shutdown/upset (optional; not currently used by SMOKE)
11 CALC_METHOD Int CALC_METHOD (optional; not currently used by SMOKE)
12 DATE_UPDATED Int Updated date in format of YYYYMMDD (optional; not currently used by SMOKE)
13 DATE Int Date of inventory in format of YYYYMMDD (required)
14 DAYTOT Real Daily Total (short tons/day) (required if SMKINVEN_MONTH is set to 0)
15 HRVAL0 Real Hourly emission for hour 0 (short tons/hour) (required)
16 HRVAL1 Real Hourly emission for hour 1 (short tons/hour) (required)
17 HRVAL2 Real Hourly emission for hour 2 (short tons/hour) (required)
  ..   ..
34 HRVAL23 Real Hourly emission for hour 23 (short tons/hour) (required)
35 COMMENT Char (optional)

6.2.7.4. EMS-95 Format and EMS-95 Wider Format

For EMS-95 formatted data, SMOKE requires that the sources in the PTHOUR file also be in the PTINV file. The values of the fields that are common to the hour-specific data and the annual data need to match exactly. These fields are Facility ID, Stack ID, Device ID, and Process ID. These fields are treated as text fields (not numeric) in SMOKE, so leading zeros need to be consistent between the hour-specific and annual or average-day inventory files.

There are two types of EMS-95 format available for hour-specific data. The traditional EMS-95 format is shown in Table 6.24, “EMS-95 Format for individual hour-specific files” and the wider EMS-95 format is shown in Table 6.25, “EMS-95 Wider Format for individual hour-specific files”. The traditional EMS-95 format has 7 columns available for the emissions values instead of 12 columns in the EMS-95 wider format. For some air pollutant values, the 7 columsns was not big enough to capture the low precision unless scientific notation is used. To use the EMS-95 wider format, the optional environmental variable HOURLY_WIDE_FMT needs to be set to Y.

To process pollutant names greater than 5 characters, you need to add the new field of inventory pollutant code known as CAS number from column 261 to 276. If this new field is filled, the POLID is not used. If the new field is not filled, the POLID is required to use the inventory data name. The CAS number will be used to distinguish which chemical compound or inventory pollutant is provided on each line of the file. Smkinven matches these numbers with the CAS numbers from an inventory table (INVTABLE) file, described in Section 6.10.4, “INVTABLE: Inventory table”. The CAS number does not necessarily have to be a valid CAS number; it can be any number as long as there is a match between the numbers in the SMOKE ORL file and the inventory table.

Table 6.24. EMS-95 Format for individual hour-specific files

Position Name Type Description
1-2 STID Int State Code (required)
3-5 CYID Int County Code (required)
6-20 FCID Char Facility ID (a.k.a. Plant ID) (required)
21-32 SKID Char
If PTINV in FF10 format: Unit ID (required)
If PTINV in ORL format: Point ID
33-44 DVID Char
If PTINV in FF10 format: Release Point ID (required)
If PTINV in ORL format: Stack ID
45-56 PRID Char
If PTINV in FF10 format: Process ID (required)
If PTINV in ORL format: Segment
57-61 POLID Char Pollutant name (required)
62-69 DATE Char Date in MM/DD/YY format. Years less than 70 are treated as century 2000 (required)
70-72 TZONNAM Char Time zone name associated with emissions data. Valid entries are GMT, ADT, AST, EDT, EST, CDT, CST, MDT, MST, PDT, and PST. (required)
73-79 HRVAL1 Real Hourly emissions for hour 1 (short tons/hour) (required)
80-86 HRVAL2 Real Hourly emissions for hour 2 (short tons/hour) (required)
87-93 HRVAL3 Real Hourly emissions for hour 3 (short tons/hour) (required)
...      
234-240 HRVAL24 Real Hourly emissions for hour 24 (short tons/hour) (required)
241-248 DAYTOT Real Daily emissions total (short tons/day)
250-259 SCC Char SCC (required).
261-276 DATNAM Char Inventory Pollutant Code (16-characters) (optional) that matches same column of Inventory Table. It is the name of the pollutants used in the ORL inventory files. This field should be used instead of the "POLID" field when pollutant anmes are longer than 5 characters. If this field is filled, POLID is not used.

Table 6.25. EMS-95 Wider Format for individual hour-specific files

Position Name Type Description
1-2 STID Int State Code (required)
3-5 CYID Int County Code (required)
6-20 FCID Char Facility ID (a.k.a. Plant ID) (required)
21-32 SKID Char
If PTINV in FF10 format: Unit ID (required)
If PTINV in ORL format: Point ID
33-44 DVID Char
If PTINV in FF10 format: Release Point ID (required)
If PTINV in ORL format: Stack ID
45-56 PRID Char
If PTINV in FF10 format: Process ID (required)
If PTINV in ORL format: Segment
57-61 Leave blank
62-69 DATE Char Date in MM/DD/YY format. Years less than 70 are treated as century 2000 (required)
70-72 TZONNAM Char Time zone name associated with emissions data. Valid entries are GMT, ADT, AST, EDT, EST, CDT, CST, MDT, MST, PDT, and PST. (required)
73-84 HRVAL1 Real Hourly emissions for hour 1 (short tons/hour) (required)
85-96 HRVAL2 Real Hourly emissions for hour 2 (short tons/hour) (required)
97-108 HRVAL3 Real Hourly emissions for hour 3 (short tons/hour) (required)
...      
349-360 HRVAL24 Real Hourly emissions for hour 24 (short tons/hour) (required)
361-372 DAYTOT Real Daily emissions total (short tons/day)
373-380 SCC Char SCC (required).
381-396 DATNAM Char Inventory Pollutant Code (16-characters) (optional) that matches same column of Inventory Table. It is the name of the pollutants used in the ORL inventory files. This field should be used instead of the "POLID" field when pollutant anmes are longer than 5 characters. If this field is filled, POLID is not used.