4.4.13. Change temporal processing

4.4.13.1. Changing temporal cross-reference and profiles
4.4.13.2. Setting normalization of weekly profiles
4.4.13.3. Changing the episode
4.4.13.4. Changing the dates, times, and duration of model-ready SMOKE emissions files
4.4.13.5. Setting non-sequential processing dates
4.4.13.6. Changing holiday dates
4.4.13.7. Use uniform temporal profiles for all sources

Changing the temporal aspect of SMOKE processing is one of the critical changes that users must make. One of the most basic changes that you can make to SMOKE is the time period for which SMOKE will be run. In this section, we will explain how to make the following changes to your SMOKE processing:

4.4.13.1. Changing temporal cross-reference and profiles

To change the temporal cross-reference and profiles the following steps must be taken.

  1. Determine which days of the week will have distinct diurnal profiles.

    SMOKE provides the capability for optionally assigning different diurnal profiles for different days of the week. The file format for the ATPRO, MTPRO, and PTPRO file explains the different sections of the file that you can use to assign these different profiles. Before you add temporal profiles, you must decide which approach you will use for the new profiles:

    • Different diurnal profiles for weekdays and weekends (using the /DIURNAL WEEKDAY/ and /DIURNAL WEEKEND/ packets).

    • Different diurnal profiles for each day of the week (using the /DIURNAL <DAYNAME>/ packets, where <DAYNAME> = the day of the week (MONDAY, TUESDAY, etc.).

  2. Ensure that different diurnal profiles for different days of the week will match across the days.

    When setting up new diurnal temporal profiles, it is important is ensure that the same temporal profile codes are used across the packets for the diurnal profiles because as source can only be assigned a single code for all of its diurnal profiles. For example, if a source were to use diurnal profile code 50, that code must be included in all of the diurnal packets and all instances of code 50 must be for that source. In other words, it is not possible to assign code 50 on Mondays and code 60 on Tuesdays.

  3. Edit the ATPRO, MTPRO, or PTPRO file to include new diurnal, weekly, or monthly profiles.

    The file format for the ATPRO, MTPRO, and PTPRO files is in Chapter 8, SMOKE Input Files. To add new diurnal profiles, you must edit these files in a text editor and the new profiles added. It is possible to use the same file instead of three separate files; in this case, just configure the Assigns file to use the same file name for all three logical file names. This has been done in the default configuration.

  4. Edit the ATREF, MTREF, or PTREF file to add entries or change assignments.

    The file format for the ATREF, MTREF, and PTREF files is in Chapter 8, SMOKE Input Files. To add or change temporal profile assignments, you must edit these files in a text editor and select the source characteristics that will be associated with a diurnal, weekly, and monthly profile. The example file uses primarily SCCs to assign temporal profiles, but the file format supports other fields to make more specific assignments by county, pollutant, link ID, plant ID, or other point-source characteristics.

  5. Ensure ATREF, MTREF, and PTREF have entries for all sources in the inventory.

    Once you have edited the file, you will need to check that all sources are being assigned profiles or that the default temporal profile is acceptable for sources that do not have more specific assignments. The easiest way to check that the files are acceptable to you is to run it through the Temporal program using the REPORT_DEFAULTS option set to Y. With this option, the Temporal log file will report all sources that have received the default temporal profile. You can review the log file to determine if this default is acceptable to you. Additionally, you can run Smkreport (after Temporal has been run) with the following instructions in the REPCONFIG input file to get a report with the temporal profile codes that Temporal assigned to each source. The instructions are:

    • BY DIUCODE
    • BY WEKCODE
    • BY MONCODE
    • BY SOURCE

4.4.13.2. Setting normalization of weekly profiles

To set normalization of weekly profiles, the following steps must be taken.

  1. Determine whether you are using an annual or average-day inventory.

    You are using an annual inventory if you are using the IDA or ORL format and you have SMK_AVEDAY_YN is set to N in your run scripts.

    You are using an average-day inventory if you are using the EMS-95 format or you are using the IDA or SMOKE Toxics format and you have SMK_AVE_DAY_YN set to Y in your run scripts.

  2. If using an annual inventory, use weekly normalization.

    To do this, make sure the WKDAY_NORMALIZE setting is set to N in your run script when you run Smkinven.

  3. If using an average-day inventory, determine whether it is an average weekday or not, and set the weekly normalization accordingly.

    If your average-day inventory is an average that excludes weekend emissions, then you need weekday normalization of your weekly profiles. To do this, make sure the WKDAY_NORMALIZE setting is set to Y in your run script when you run Smkinven.

    If the values of your average-day inventory include weekend emissions, then you do not need weekday normalization and the WKDAY_NORMALIZE setting in your run scripts should be set to N when you run Smkinven.

4.4.13.3. Changing the episode

The episode definition is the period for which you will generate SMOKE outputs. To change the episode dates, the following steps must be taken. In addition, the episode dates must be consistent with the run length settings, described in the next subsection.

  1. Choose an episode within a single calendar year.

  2. Set the EPI_STDATE to the Julian start date of your episode.

    In general, this setting is the same as the G_STDATE setting in the Assigns file. As will be described in the next subsection, G_STDATE changes with each modeling period within the episode (e.g., modeling with 5-day periods), but the EPI_STDATE setting is the same for the entire SMOKE run.

    The EPI_STDATE setting is also generally consistent with the base model year set by the YEAR environment variable, which in turn is consistent with the year of data in the input inventory files.

  3. Set the EPI_STTIME to the start time that you wish to use for each model-ready emissions file created in your SMOKE run. This value is usually 0.

  4. Set the EPI_RUNLEN to the number of hours in the episode.

    Do not add an hour to this duration as with the G_RUNLEN setting described in the next subsection. The format for this setting allows up to four hours in the format (i.e., HHHHMMSS).

  5. Set the EPI_NDAY to the number of days of the episode.

    The minimum value is 1 and the maximum value is 365 (366 for leap years).

  6. Ensure that all time dependent input data are available for the run period.

    The critical time-dependent data that you must ensure are available for the episode duration are:

4.4.13.4. Changing the dates, times, and duration of model-ready SMOKE emissions files

The run length is the time period for which each program that uses temporal process will be run. Sometimes these periods are called the “chunks” of processing, as in the episode is being processed in “chunks”. This period will determine the length of all of the hourly SMOKE intermediate files including ATMP, MTMP, PTMP, PLAY, and all model-ready outputs from Smkmerge. To change the run length, the following steps must be taken.

  1. Set the G_STDATE setting the same as your EPI_STDATE.

    The G_STDATE setting in the Assigns file is the starting date of the first SMOKE model-ready emissions file. The G_STDATE_ADVANCE script variable is set in the scripts so that the scripts will automatically reset the G_STDATE variable as need to run SMOKE for each period in the episode. The length of those periods is set by the G_RUNLEN variable and the number of periods is EPI_RUNLEN divided by G_RUNLEN.

  2. Set the G_STTIME setting the same as the EPI_STTIME. This value is the start time that you wish to use for each model-ready emissions file created in your SMOKE run. This value is usually 0.

    Generally, the start time must also be consistent with the start time of the other inputs to the air quality model, such as the meteorology data. For example, if the meteorology data start at 12 Greenwich Mean Time (GMT) and the air quality model will also start at that time, then the emissions files will also need to start at 12 GMT. This can be achieved by setting G_STTIME and EPI_STTIME to 120000 (HHMMSS format).

  3. Set the G_TSTEP setting to 10000 for 1 hour (HHMMSS format). In version 2 of SMOKE and earlier, this is the only setting that is supported by the code.

  4. Set the G_RUNLEN to the period run length for each model-ready SMOKE emissions file.

    The run length can be set to as many hours as your air quality model can support for a single input file, as long as your files do not surpass a 2 GB file size limit, which are be imposed by 32-bit UNIX operating systems and by the NetCDF library on which SMOKE is based. Generally, the air quality models can accept files for as long as the user wishes to provide, so the limit is therefore the file sizes, which can be determined by trial and error. The conservative approach is to create emissions files for 1 day at a time.

    The air quality models require an extra hour of emissions data for each file. Therefore the number of hours for the G_RUNLEN setting is computed as:

    (number of days per file) x 24 + 1

    The G_RUNLEN setting must be in format of HHHHMMSS where HHHH is a four-digit number of hours, MM is the minutes (must be 00), and SS is the seconds (must also be 00).

  5. Set the ESDATE setting to the first date of your episode in YYYYMMDD format.

    Recall that the ESDATE setting is for naming files. In the Assigns file, the value of this setting should be the starting date for the first emissions file to be created by the SMOKE run. The default SMOKE script configuration will automatically update ESDATE for subsequent run periods.

  6. Set the NDAYS setting to the number of days represented by G_RUNLEN.

    For example, if G_RUNLEN is 490000 (2 days x 24 + 1 = 49 hours), then NDAYS should be 2.

4.4.13.5. Setting non-sequential processing dates

The PROCDATES option is specifically designed for use on daily and/or hourly inventory data with Temporal. PROCDATES is not yet incorporated within other SMOKE core programs, such as Grdmat,Smkmerge or Smkreport. For creating model-ready outputs and QA reports, the users need to be sure that the episode dates (EPI_STDATE and G_STDATE) in the assigns file are listed in PROCDATES

If PROCDATES is not assigned, the defaults are G_STDATE, G_STTIME and G_RUNLEN.

The following steps must be taken to set non-sequential processing dates.

Area/Non-road/Point Sources

  1. Determine whether you need to use PROCDATES.

  2. If you are using PROCDATES, you need to set the environment variable by uncommenting PROCDATES in the assigns file.

  3. Set the environment variable PROCDATES to the file procdates.txt located in GE_DAT. (i.e. setenv PROCDATES $GE_DAT/procdates.txt.

Mobile Source

Temporal is responsible to convert annual/monthly to hourly VMT. Movesmrg is responsible for combining hourly emissions factors calculated by MOVES with hourly VMT data to generate hourly on-road mobile emissions.

  1. Determine whether you need to use PROCDATES.

  2. If you are using PROCDATES, you need to set the environment variable by uncommenting PROCDATES in the assigns file.

  3. Set the environment variable PROCDATES to the file procdates.txt located in GE_DAT. (i.e. setenv PROCDATES $GE_DAT/procdates.txt.

NOTE: Since the Temporal dynamically create names for the output files, two new environment variables [A|M|P]TMPNAME and [A|M|P]TSUPNAME are used to set the directory and file prefix for naming the output files [A|M|P]TMP and [A|M|P]TSUP. The files are named using the starting date of each time period.For example, if ATMPNAME is set to /data/ntmp.nctox., then the ATMP file for a given time period will be put in the data directory and named ntmp.nctox.start date.ncf.

4.4.13.6. Changing holiday dates

As previously explain in Section 2.10.5, “Holiday processing”, SMOKE can model holidays as special days. The holidays that are relevant are those holidays for which anthropogenic activities are significantly altered, since its those activities that determine the appropriate weight to give the emissions on each day of the week and the diurnal temporal patterns for those days. For example, the nearly all workers in the U.S. have a holiday from their employment on Thanksgiving day, and the patterns of industrial and motor-vehicle activities are substantially altered resulting in different emissions patterns on those days. The Valentines Day holiday, however, does not affect such patterns because employers do not allow workers a day off on that day.

The HOLIDAYS file controls which days SMOKE will treat as holidays and which day of the week SMOKE will emulate for that day. The file must be created for each year, since some holiday dates are different each year. Although the format of the file suggests that the holidays can be modeled differently for different counties in the inventory, this is not the case - the format is provided for a future update to SMOKE, which has not yet been implemented.

To change the holiday dates that are modeled by SMOKE, all that is required is changing the HOLIDAYS file to include the year and holidays in which you are interested, and select a day of the week to use for modeling that holiday. If you do not wish SMOKE to treat a holiday any differently, then it should be removed from the file. If you wish no days to be modeled as holidays, we recommend including at least one date in the file, and assigning its actual day of the week, to prevent SMOKE from getting confused.

4.4.13.7. Use uniform temporal profiles for all sources

SMOKE includes a little-used option to allow SMOKE to ignore all temporal profile information from the temporal cross-reference and temporal profiles. In this case, the emissions will be constant for all hours of all days, except for a slight variation from month to month to account for the different number of days in each month. This option still requires the temporal cross-reference and temporal profile input files, but they are ignored. To use this capability in SMOKE, set the UNIFORM_TPROF_YN setting in the run script to Y.