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:
To change the temporal cross-reference and profiles the following steps must be taken.
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.).
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.
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.
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.
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:
To set normalization of weekly profiles, the following steps must be taken.
Determine whether you are using an annual or average-day inventory.
You are using an annual inventory if you have SMK_AVEDAY_YN
is set to N in your run scripts.
You are using an average-day inventory if you have SMK_AVE_DAY_YN
set to Y in your run scripts.
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.
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.
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.
Choose an episode within a single calendar year.
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.
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.
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).
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).
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:
Meteorology data (see Section 4.4.16, “Change meteorology data”)
Day- and hour-specific point source data (including any precomputed plume rise data)
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.
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
.
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).
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.
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).
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.
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.
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
Determine whether you need to use PROCDATES
.
If you are using PROCDATES
, you need to set the environment variable by uncommenting PROCDATES
in the assigns file.
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.
Determine whether you need to use PROCDATES
.
If you are using PROCDATES
, you need to set the environment variable by uncommenting PROCDATES
in the assigns file.
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.
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.
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.