W**"*"*"    Ei'titon
AERMINUTE User's Guide

-------

-------
                                             EPA-454/B-15-006
                                                  October, 2015
       AERMINUTE User's Guide
   U.S. Environmental Protection Agency
Office of Air Quality Planning and Standards
     Air Quality Assessment Division
       Air Quality Modeling Group
   Research Triangle Park, North Carolina

-------
                                       Preface

This document provides a description of AERMINUTE, a pre-processor to AERMET to read 1-
minute and optionally, 5-minute ASOS data to calculate hourly average winds for input into
AERMET. Included in this document are descriptions of inputs, processing methodology, and
outputs.
                                          11

-------
                                     Contents
Preface	ii
Figures	v
Tables	vi
1.  Purpose	1
2.  Changes to AERMINUTE	1
  2.1 Version 11325	1
  2.2 Version 14237	2
  2.3 Version 14337	2
  2.4 Version 15272	3
3.  Obtaining ASOS wind data	3
4.  Processing and hourly averaging	7
  4.1 User inputs	7
    4.1.1 STARTEND	8
    4.1.2 IFWGROUP	8
    4.1.3 DATAFILE	9
    4.1.3 DAT5FILE	10
    4.1.5 SURFDATA	11
    4.1.6. OUTFILES	11
  4.2. File checking	14
  4.3 Record processing	14
    4.3.1 1-MINUTE DATA FILES	14
    4.3.2 5-MINUTE DATA FILES	15
  4.4 Data substitution and flagging 2-minute values for hourly averaging	16
  4.5 Quality control	17
  4.6 Averaging	18
5.  Outputs	18
  5.1 Hourly winds (HOURFILE)	19
  5.2 Record check files	20
  5.3 Summary file (SUMMFILE)	21
  5.4 Comparison file (COMPFILE)	25
  5.5 1-minute and 5-minute comparison file (1_5_FILE)	27
  5.6. List of substituted minutes (SUB5FILE)	27
  5.7. Log file	28
                                        iii

-------
6.  References	36
Appendix A: Record Quality Control Check Methodology	A-l
Appendix B. ASOS stations missing 1-minute data files for June-December 2013	B-l
                                         IV

-------
                                      Figures

Figure 1. General format of an ASOS 1-minute file	4
Figure 2. General format of an ASOS 5-minute file	6
Figure 3. Initial prompt of name of AERMINUTE control file	7
Figure 4. AERMINUTE control input file structure	8
Figure 5. Examples ofinputfiles.txt for a) files enclosed in quotations, with full pathname, and
out of sequential order; and b) files for multiple years in the current working directory	10
Figure 6. Example AERMINUTE control input file	13
Figure 7. Example hourly averaged winds and order of variables	20
Figure 8. Format of SUMMFILE when 5-minute data is not read by AERMINUTE	23
Figure 9. Format of SUMMFILE when 5-minute data is read by AERMINUTE	24
Figure 10. Format of COMPFILE	26
Figure 11. Format of 1_5_FILE	27
Figure 12. Format of SUB5FILE	28
Figure 13. Input summary section ofaerminute.log	28
Figure 14. Data file check section ofAERMINUTE.LOG	29
Figure 15. 1-minute file processing section ofaerminute.log	31
Figure 16. 5-minute file processing section ofaerminute.log	32
Figure 17. Quality control summaries listed in AERJVIINUTE.LOG	33
Figure 18. Summary section ofaerminute.log	35
Figure A-l. Example good_records.dat file	A-4
Figure A-2. Example check_records.dat file	A-5
Figure A-3. Examplebad_records.dat file	A-7
Figure B-l. Locations of ASOS stations in conterminous U.S. with missing June-December
2013 1-minute data files	B-10
Figure B-2. Locations of ASOS stations in Alaska with missing June-December 2013 1-minute
data files	B-ll

-------
                                      Tables
Table A-1. Quality control checks on 1 -minute winds read by AERMINUTE	A-2
Table A-2. Description of records in check_records.dat file	A-6
TableB-l. Region 1 ASOS stations	B-l
Table B-2. Region 2 ASOS stations	B-2
Table B-3. RegionS ASOS stations	B-2
Table B-4. Region 4 ASOS stations	B-3
Table B-5. Region 5 ASOS stations	B-4
Table B-6. Region 6 ASOS stations	B-5
Table B-7. Region 7 ASOS stations	B-6
Table B-8. Region 8 ASOS stations	B-7
Table B-9. Region 9 ASOS stations	B-8
Table B-10. Region 10 ASOS stations	B-9
                                        VI

-------
1. Purpose

Surface meteorological data collected by the National Weather Service (NWS) and Federal
Aviation Administration (FAA) are often used as the source of input meteorological data for
AERMOD (EPA, 2010a). A potential concern related to the use of NWS meteorological data for
dispersion modeling is the often high incidence of calms and variable wind conditions reported
for the Automated Surface Observing Stations (ASOS) in use at most NWS stations since the
mid-1990's.  In the METAR coding used to report surface observations beginning July 1996, a
calm wind is defined as a wind speed less than 3 knots and is assigned a value of 0 knots.  The
METAR code also introduced the variable wind observation that may include wind speeds up to
6 knots, but the wind direction is reported as missing, if the wind direction varies more than 60
degrees during the 2-minute averaging period for the observation.  The AERMOD model
currently cannot simulate dispersion under calm or missing wind conditions. To reduce the
number of calms and missing winds in the surface data, archived 1-minute winds for the ASOS
stations can be used to calculate hourly average wind speed and directions, which are used to
supplement the standard archive of hourly observed winds processed in AERMET (EPA, 201 Ob).
Beginning with version 15272, AERMINUTE will also read in 5-minute ASOS data to
supplement the 1-minute data when 1-minute data is missing.  The 5-minute data consists of the
2-minute wind speeds reported every 5-minutes. The impetus for including the 5-minute data
files is due to 253 stations across the U.S. missing 1-minute data files for June through December
of 2013. These stations did have 5-minute data files however that could be used to supplement
the missing data. A list and  map of the 253 stations can be found in Appendix B of this
document.

2. Changes to AERMINUTE

The original version of AERMINUTE is version 11059.  Following is a list of changes with each
subsequent version.

2.1 Version 11325

   1.  Modified subroutine  CHECKWIND to adjust quality control flags 3, 4, and 5 when
       checking the wind data line format. Flag 3 was modified to better check for four digit
       character strings that may indicate a possible time. In version 11059 of AERMINUTE,
       any four digit string was considered a possible time. In version 11325, the string is only
       considered a possible time if the entire four digit string is a complete integer string, i.e.
       1105 would be a possible time but not 110503. If a possible time is found flag 3 is set to
       one, otherwise flag 3 is zero. Flag 4 previously checked for a 'M', 'N, or 'D' in column
       39. Flag 4 now checks for a non-blank character in column 30. If column 30 contains a
       non-blank character,  then flag 4 is set to one. Otherwise, flag 4 is zero.  Flag 5 as
       modified to look for  any non-blank character in column 67 of the data line. If a non-
       blank character is found in column 67 flag 5  is set to one, otherwise flag 5 is zero.  For
       any of the three flags, if a value is one, the record is considered suspicious and not used
       in hourly averaging.  The record is output to  check_records.dat.

-------
 2.2 Version 14237

   1. Modified subroutine CHECKWIND to adjust quality control flags 6 through 9. Flags 6
      through 9 were modified to account a change in the format of the 6405 1-minute data
      files roughly beginning with year 2014 files. Flag 6 (2-minute wind direction) now
      checks columns 70-74, flag 7 (2-minute wind speed) checks columns 76-79, flag 8(5-
      second gust direction) checks columns 82-84 and flag 9 (5-second gust speed) checks for
      columns 87-89. For these flags, if there is a number in any of those columns, the
      respective flag is set to 0, otherwise the flag is set to 1. These changes allow
      AERMINUTE to work with pre 2014 and 2014 and new files.
   2. Modified subroutine CHECKWIND to create a new flag 10.  Flag 10 checks columns 64-
      68 for non-blank characters. If a non-blank character  is found flag 10 is set to 1,
      otherwise it is set to 0.
   3. Modified subroutine CHECKWIND to create a new flag 11.  Flag 11 checks column 90
      for a non-blank character.  If a non-blank character is  found, flag 11 is set to 1, otherwise
      it is set to 0.
   4. Modified subroutine CHECKWIND to make the previous versions of flags 10 and 11 to
      12 and 13 respectively.
   5. Modified subroutine CHECKWIND to check for the number of fields in columns 67-90
      if the record passes the strict quality control check, all flags are zero.   The number of
      fields should be four, representing 2-minute wind direction and speed and 5-second gust
      direction and  speed. If the number of fields is not equal to 4 then flag 12 is set 1 and flag
      13 is set to the number of fields. If the number of fields is equal to 4 then flag 12 is set to
      0 and flag 13  is set to 9.
   6. Modified subroutine CHECKWIND to increase size of variables aflag and iflagl from 11
      to 13
   7. Modified module MAIN1  reset variable flagcounts from size 12 to 14.
   8. Modified subroutine READONE, modified variable flagstr from size 12 to 14 and
      included descriptions of modified flags 6-9 and new flags 10 and 11.   Also the format
      statement for  the counts of records was modified to left justify the text and right justify
      the counts.
   9. Modified subroutine HEADLINE to increase length of variable aflag from 11 to 13 to
      accommodate new flags.

2.3 Version 14337

   1. Modified subroutine CHECKWIND to remove the check on column 67 for non-blank
      character and columns 64-68 for non-blank characters.
   2. Flags 6-12 were renumbered accordingly, flags 6-9 became flags 5-8 and flags 11 and 12
      became flags  9 and 10.
   3. Modified subroutine CHECKWIND to search columns 68-90 for non-numeric columns
      for flag 1.  The check was originally columns 67-90.
   4. Modified subroutine CHECKWIND to decrease the size of variables aflag and iflagl
      from 13 to 11.
   5. Modified module MAIN1  to reset variable flagcounts from size 14 to 12.

-------
   6.  Modified subroutine READONE to reset variable flagstr from size 14 to 12 and included
       descriptions of modified flags.
   7.  Modified subroutine HEADLINE to decrease length of variable aflag from 13 to 11 to
       accommodate new flags.

2.4 Version 15272

   1.  Modified subroutine USERINP to add optional data section for 5-minute ASOS data files
       (DSI-6401 format).
   2.  Modified subroutine USERINP to allow for no 1-minute data file listing as long as
       optional 5-minute data files are listed.
   3.  Modified subroutine USERINP to allow for optional output files, SUB5FILE and
       1_5_FILE.
   4.  Modified subroutine CHECKFILES to perform QA on 1-minute or optional 5-minute
       data filenames.
   5.  Added subroutines READFIVE, READS, and CHECKWIND5 to read and QA 5-minute
       data files.
   6.  Added subroutine CHECKWBAN to check WBAN number for non-numeric characters
       for 1-minute and 5-minute data files.
   7.  Added subroutine SUBS to substitute missing 1-minute data values with corresponding 5-
       minute data values.
   8.  Modified subroutine WRITEOUT to include 5-minute data summaries for summary file
       and output file.
   9.  Modified subroutine MINMAXONE to include source of minimum and maximum 2-
       minute winds, i.e. 1-minute or 5-minute data file.
   10. Modified subroutine HOURLYMINMAX to include source of data (1-minute or 5-
       minute) for hourly minimum and maximum wind speeds and directions.
3. Obtaining ASOS wind data

Recently, the National Climatic Data Center (NCDC) began archiving the 2-minute average
wind speeds for each minute of the hour for most ASOS stations for public access.  These 2-
minute values have not been subjected to the METAR coding for calm and variable winds, but
have also been subjected to only limited quality control measures. However, the 2-minute winds
listed in the 5-minute files have been subjected to the METAR coding for calm and variable
winds.  The 1-minute ASOS wind data consists of running 2-minute average winds, reported
every minute, for commissioned ASOS stations. The 1-minute ASOS wind data can be obtained
without cost through the National Climatic Data Center (NCDC) website at
ftp://ftp.ncdc.noaa.gov/pub/data/asos-onemin/ and the 5-minute data can be obtained at
ftp://ftp.ncdc.noaa.gov/pub/data/asos-fivemin/

The 1-minute ASOS winds are in the DSI-6405 format (sub-directories with 6405 as the first
four characters in the 1-minute ftp directory listed above) and the 5-minute winds are in the DSI-
6401 format (sub-directories 6401 as the first four characters in the 5-minute data ftp directory
listed above). For both types of data, for each station and year, files are available in monthly

-------
blocks, i.e. one file per month for a station. Files are generally named
640ZOXXXXYYYYMM.dat where Z is 1 for 6401 (5-minute data) or 6405 (1-minute data),
XXXX is the four-character station call sign, and YYYY and MM are the 4-digit year and 2-digit
month. Example 1-minute and 5-minute filenames for Raleigh-Durham for January 2003 are
'64050KRDU200301.dat' and '64010KRDU200301.dat' respectively. First-order stations'
archives generally begin with data for 2000 for both datasets. Other stations' archives generally
start in March 2005 for both datasets.

The file format of the 1-minute files can be found at
http://wwwl.ncdc.noaa.gov/pub/data/documentlibrary/tddoc/td6405.pdfand the format for the 5-
minute files (post 1998) can be found at
http://wwwl.ncdc.noaa.gov/pub/data/documentlibrary/tddoc/td6401b.pdf

The general format of a 1-minute file and variable  descriptions is shown in Figure 1 and a 5-
minute file is shown in Figure 2.
13874KATL ATL2003010100000500 0.059 N 0.118 N 135 10 125 10 09R60+
13874KATL ATL2003010100010501 0.058 N 0.118 N 136 9 131 11 09R60+
13874KATL ATL2003010100020502 0.058 N 0.118 N 141 9 143 11 09R60+
13874KATL ATL2003010100030503 0.056 N 0.118 N 148 10 164 13 09R60+
13874KATL ATL2003010100040504 0.054 N 0.119 N 154 11 151 13 09R60+
13874KATL ATL2003010100050505 0.054 N 0.120 N 157 11 163 13 09R60+
13874KATL ATL20030 10 100060506 0.052 N 0.117 N 160 11 166 13 09R60+
13874KATL ATL2003010100070507 0.053 N 0.117 N 156 10 154 12 09R60+
Variable
Station WBAN Number
4-letter station call sign (with leading K or P in most cases)
3 -letter station call sign (without leading character)
4-digit year in local standard time (LST)
2-digit month in LST
2-digit day in LST
2-digit hour (00-23) in LST
2-digit minute (00-59) in LST
2-digit hour (00-23) in Universal Time Coordinate (UTC)
2-digit minute (00-59) in UTC
Visible extinction coefficient at first sensor (N=night, D=day, M=missing)
Visible extinction coefficient at second sensor (N=night, D=day, M=missing)
2-minute average wind direction (deg)
2-minute average wind speed (knots)
Maximum 5 -second wind speed direction (deg)
Maximum 5 -second wind speed (knots)
Runway visual range (hundreds of feet)
Columns
1-5
6-9
11-13
14-17
18-19
20-21
22-23
24-25
26-27
28-29
31-41*
Varies
67-74*
75-79*
80-84*
85-89*
92-97*
*Column placement is not always fixed for these variables. Ranges are based on visual inspection of files during
program testing.
Figure 1.  General format of an ASOS 1-minute file.

As can be seen in the variable descriptions in Figure 1, the station information (WBAN and call
signs) and dates are in fixed formats while the wind data are not always in the same columns.
AERMINUTE takes the wind data format variability into consideration when reading the wind

-------
data variables during file processing and looks for ranges of columns for the data variables.
Also, as discussed in more detail in Section 5.2 and Appendix A, the 1-minute ASOS data files
often records with "garbled" data that do not follow any clear format. For the 5-minute files, the
files appear to be in a more consistent format. Note in Figure 2, winds reported as 'OOOOOKT'
have been subjected to the METAR calms coding and winds starting with 'VRB' have been
subjected to the METAR variable wind coding.

-------
03032K6R6 6R620050303044010103/03/05 04:40:31 5-MIN K6R6 031040Z AUTO OOOOOKT 07/04 A2999 2260 82 1900 000/00 RMK AO2 PWINO TSNO
03032K6R6 6R620050303044510103/03/05 04:45:31 5-MIN K6R6 031045Z AUTO 30003KT 07/04 A2999 2260 82 1900 300/03 RMK AO2 PWINO TSNO
03032K6R6 6R62005030304501 1803/03/05 04:50:31 5-MIN K6R6 031050Z AUTO 29003KT 07/04 A2999 2260 82 1900 280/03 RMK AO2 SLP139 T00720044 PWINO TSNO
03032K6R6 6R620050303045510103/03/05 04:55:31 5-MIN K6R6 031055Z AUTO 29004KT 07/04 A2999 2260 82 1900 290/04 RMK AO2 PWINO TSNO
03032K6R6 6R620050303050010103/03/05 05:00:31 5-MIN K6R6 031100Z AUTO 29005KT 07/04 A3000 2250 86 1800 290/05 RMK AO2 PWINO TSNO
03032K6R6 6R6200503030505 10 103/03/05 05:05:31 5-MIN K6R6 031 105Z AUTO 28006KT 07/04 A3000 2250 82 1800 270/06 RMK AO2 PWINO TSNO
03032K6R6 6R620050303051010103/03/05 05:10:31 5-MIN K6R6 0311 10Z AUTO 29007KT 06/04 A3000 2250 86 1800 290/07 RMK AO2 PWINO TSNO
03032K6R6 6R620050303 11 1010103/03/05 11:10:31 5-MIN K6R6 031710Z AUTO VRB04KT 14/08 A3009 2160 64 2600 VRB/04 RMK AO2 PWINO TSNO
03032K6R6 6R620050303 180010803/03/05 18:00:31 5-MIN K6R6 040000Z AUTO 13012G19KT 19/07 A2995 2290 44 3400 130/12G19 RMK AO2 PWINO TSNO
Variable
Station WBAN Number
4-letter station call sign (with leading K or P in most cases)
3 -letter station call sign (without leading character)
4-digit year in local standard time (LSI)
2-digit month in LST
2-digit day in LST
2-digit hour (00-23) in LST
2-digit minute at 5-minute interval (00-55) in LST
Record length starting at column 29
Date in LST (MM/DD/YY)
TiminLST(HH:MM:SS)
Data type (always "5-min")
4-letter station call sign (with leading K in most cases)
Date and time in UTC (ddhhmmZ)
Observation type (only present when in auto mode =
'AUTO')
2-minute average wind direction in tens of degrees
(degrees/10)
2-minute average wind speed (knots)
Columns
1-5
6-9
11-13
14-17
18-19
20-21
22-23
24-25
26-28
29-36
38-45
48-52
54-57
59-65
67-70
67-68 (if 'AUTO' not present), 72-73 (if 'AUTO'
present)
69-71 (if 'AUTO' not present), 74-76 (if 'AUTO'
present)
Figure 2. General format of an ASOS 5-minute file.

-------
4.  Processing and hourly averaging
4.1 User inputs

The user must create a file that contains information that controls the processing in
AERMINUTE, including several pieces of information about the station as well as the
of the 1-minute data files and optional 5-minute files.  The user is prompted for the name of
input file (Figure 3).  The structure and keywords of the file are shown in

Figure 4.  In the input file, lines that start with ' **' in the first two columns are comment lines
and are not processed by AERMINUTE. Each section of information is described below.
  51 Command Prompt - ..\aerminute_15272
Figure 3. Initial prompt of name of AERMINUTE control file.

-------
   STARTEND start month startjyear end month end^year

   IFWGROUP Status  comm  month comm day comm_year

   DATAFILE STARTING
   1-minute data file list
   DATAFILE FINISHED

   DAT5FILE STARTING           (Optional)
   5-minute data file list
   DAT5FILE FINISHED

   SURFDATA STARTING          (Optional)
   Surface files list
   SURFDATA FINISHED

   OUTFILES STARTING
   HOURFILE name
   SUMMFILE name                (Optional)
   COMPFILE name                (Optional)
   1_5_FILE name                  (Optional)
   SUB5FILE name                 (Optional)
   OUTFILES FINISHED
Figure 4. AERMINUTE control input file structure.

4.1.1 STARTEND

The keyword STARTEND lists the start month, start year, end month and end year of data
processing.  These are denoted by the variables start month, startjyear, end month, and
end_year. The start day and hour are assumed to be one. The end day is the last day of the end
month and the end hour is assumed to be hour 24.

4.1.2IFWGROUP

The keyword IFW GROUP denotes if the station is part of the Ice Free Winds (IFW) group
during the period denoted by the dates listed with STARTEND.  The IFW group is composed of
NWS and FAA ASOS sites that use sonic anemometers instead of cup and vane anemometers to
measure winds. AERMINUTE treats wind speeds less than 2 knots differently based on whether
the station uses a sonic or cup and vane anemometer during the data period.  A list of stations
with their IFW installation dates, as of October 27, 2009, can be found at:
http://www.weather.gov/ops2/Surface/documents7IFW_stat.pdf.  The variable, status, denotes if
the station is part of the IFW group. If a station is part of the IFW group during the data period
denoted by STARTEND, status should be set to an upper or lowercase "Y" followed by the
commission month, day, and 4-digit year. The hour of commission is assumed to be hour 1 of
the commission date.  If a station is not part of the IFW group during the data period denoted by

-------
STARTEND or is not part of the IFW group at all, status should be set to an uppercase or
lowercase "N," and any text after the status variable is ignored. When AERMINUTE detects
that the station is part of the IFW group, it checks the commission date against the end date listed
in STARTEND.  If the commission date is after the end date in STARTEND, AERMINUTE
resets the status  of the station to "no" and notifies the user. This would be the equivalent of
setting LFWGROUP to "N" in the input file. If the IFW commission date is before or after the
start date but is before the end date, the IFW status is left unchanged from the user input.  For
more information about the Ice Free Winds implementation see
http://www.nws.noaa.gov/ops2/Surface/asosimplementation.htm. If the data period being
processed is after 2009 and the station is not listed in the station list referenced above, it may be
reasonable to assume that the station is part of the IFW group and the IFW commission date can
be set to the start date set with the STARTEND keyword. Users may want to consult with NWS
station responsible for the ASOS to verify if the station is part of the IFW group.

4.1.3DATAFILE

The DATAFILE section lists the 1-minute data files to be read by AERMINUTE.  The
DATAFILE section begins with "DATAFILE STARTING." On lines below "DATAFILE
STARTING" the user lists the 1-minute data files, one file per line.  After the last file, the
DATAFILE section ends with "DATAFILE FINISHED."  Both "DATAFILE STARTING" and
"DATAFILE FINISHED" must be present or AERMINUTE will abort and notify the user of the
error if processing 1-minute data only. If including the optional 5-minute data, if both
"DATAFILE STARTING" and "DATAFILE FINISHED" are not found, AERMINUTE will
issue a warning  and use the 5-minute data.

If multiple 1-minute data files are to be read into AERMINUTE, they do not have to be in
temporal sequential order and can cover dates not included in the file processing.   However,
AERMINUTE will read all the data files, so if the user only wants to process a year or a few
months, the user may want to list only those files, or comment out files outside the data period,
to speed up processing.  The files should be for one station only. If more than one station is
detected by AERMINUTE based on the WBAN number, a fatal error is issued and the
AERMINUTE program aborts further processing.  If a change in the call sign is detected, but the
WBAN number does not change, the user is warned that the station call sign has changed during
processing. If the files are in the current working folder1 or directory, just the filenames can be
listed.  If the files are in a different folder than the current folder, the filenames should include
the full pathame of the files. If the pathname or filenames have spaces in the names, the entire
text string should be enclosed in quotations.  See Figure 5 for example inputs. In Figure 5a, the
files are located in a folder called "example files" that is a subfolder of the current working
directory. Note that the entire pathname is in quotations and that the files are not listed in
sequential order; i.e. January 2003 is listed at the end. Figure 5b shows files for multiple  years
that are located in the current working directory.
1 Current working folder refers to the folder or directory where processing is taking place. If the user is executing
AERMINUTE by double clicking the AERMINUTE executable icon, the current folder is the location of the icon.
If the user is executing AERMINUTE from a command line, i.e. DOS, Linux, or Unix window, the current folder or
directory is the location the user is in at the time of processing.

-------
    "examplefiles\64050KATL200302.dat"
    "examplefiles\64050KATL200303.dat"
    "examplefiles\64050KATL200304.dat"
    "examplefiles\64050KATL200305.dat"
    "examplefiles\64050KATL200306.dat"
    "examplefiles\64050KATL200307.dat"
    "exampiefiles\64050KATL200308.dat"
    "examplefiles\64050KATL200309.dat"
    "examplefiles\64050KATL200310.dat"
    "example files\64050KATL200311 .dat"
    "examplefiles\64050KATL200312.dat"
    "example files\64050KATL200301 .dat"
    64050KEWR200301.dat
    64050KEWR200302.dat
    64050KEWR200303.dat
    64050KEVVR200304.dat
    64050KEWR200305.dat
    64050KEWR200306.dat
    64050KEWR200307.dat
    64050KEWR200308.dat
    64050KEWR2003Q9.dat
    64050KEWR200310.dat
    64050KEWR200311.dat
    64050KEWR200312.dat
    64050KEWR200401.dat
    64050KEWR2Q0402.dat
    64050KEWR200403.dat
    64050KEWR200404.dat
    64050KEWR200405.dat
    64050KEWR200406.dat
    64050KEWR200407 .dat
    64050KEWR200408.dat
    64050KEWR200409.dat
    64050KEWR200410.dat
    64050KEWR200411.dat
    64050KEWR200412.dat
Figure 5. Examples of inputfiles.txt for a) files enclosed in quotations, with full pathname,
and out of sequential order; and b) files for multiple years in the current working
directory.

4.1.3DAT5FILE

Beginning with version 15272, AERMINUTE allows the option to process 5-minute data files
(6401 format).  The DAT5FILE section lists the 5-minute data files to be read by AERMINUTE.
The DATAFILE section begins with "DAT5FILE STARTING."  On lines below "DAT5FILE
                                             10

-------
STARTING" the user lists the 5-minute data files, one file per line. After the last file, the
DAT5FILE section ends with "DAT5FILE FINISHED." Both "DAT5FILE STARTING" and
"DAT5FILE FINISHED" must be present when processing 5-minute data or AERMINUTE will
abort and notify the user of the error.

As with the 1-minute data files, if multiple 5-minute data files are to be read into AERMINUTE,
they do not have to be in temporal sequential order and can cover dates not included in the file
processing.  However, AERMINUTE will read all the data files, so if the user only wants to
process a year or a few months, the user may want to list only those files, or comment out files
outside the data period, to speed up processing. The files should be for one station only. If more
than one station is detected by AERMINUTE based on the WBAN number, a fatal error is issued
and the AERMINUTE program aborts further processing. AERMINUTE will also abort if the
WBAN number from the 5-minute files differs from those of the 1-minute files. If a change in
the call sign is detected, but the WBAN number does not change, the user is warned that the
station call sign has changed during processing. File listing for the 5-minute data files is similar
that described for the 1-minute data files and shown in Figure 5, i.e. use of quotations,
pathnames, etc.

4.1.5 SURFDATA

The keyword SURFDATA is optional.  The SURFDATA section lists data files of standard
NWS observations.  These are the same files that would be read by AERMET in Stage 1
processing NWS surface data. Currently, AERMINUTE is only configured to read
Surface Hourly Data (ISHD) in the DS-3505 full archival format.  The purpose of reading
data files is to compare the non-quality controlled 1-minute winds from the 1-minute data
listed in the DATAFILE section and optional 5-minute data against the quality controlled
standard observations. The SURFDATA section follows the same syntax as the
section.  The section starts with the keywords "SURFDATA  STARTING" and ends  with
"SURFDATA FINISHED." The standard observation files are listed between the lines as
in

Figure 4.  The listing of the standard observation files also follows the convention of the 1-
minute data files, i.e. files with spaces in the names must be listed in quotation marks and  full or
relative pathnames must be listed when the files are not in the current directory. If processing
the standard observations, both "SURFDATA STARTING" and  "SURFDATA FINISHED"
must be present or AERMINUTE will abort and notify the user.  If the SURFDATA section is
missing, AERMINUTE will not abort as long as the COMPFILE keyword is not listed in the
OUTFILES section (See Section 4.1.6).

4.1.6. OUTFILES

The OUTFILES section lists three files that can be output:
          •   HOURFILE:  The hourly averaged winds output from AERMINUTE and
             formatted for input into AERMET in Stage 2.  This keyword is mandatory.
                                        11

-------
             SUMMFILE: A comma delimited summary file that details the number of
             minutes used for each hour as well as minimum, maximum, and average wind
             speed and direction. This keyword is optional.
             COMPFILE: A comma delimited file that lists the winds from the 1-minute data
             and standard observations for all observation times listed in the standard
             observations file.  This keyword must be present if the SURFDATA keywords are
             used or AERMINUTE will abort. If COMPFILE is present and the SURFDATA
             keywords are not present, AERMINUTE will also abort.
             15 FILE:  A comma delimited file that lists the 1-minute and optional 5-minute
             winds for dates and times where both data are non-missing. This keyword is
             optional. However, if the keyword is present and the user is not inputting 5-
             minute data or the user is not inputting 1-minute data, AERMINUTE will abort.
             SUB5FILE: A comma delimited file that lists the dates and times as well as the
             winds from the optional 5-minute data that is substituted into the 1-minute data
             arrays.  This keyword is optional. However, if the keyword is present and the
             user is not inputting 5-minute data, AERMINUTE will abort.
The syntax of the OUTFILES section is similar to DATAFILE, DAT5FILE and SURFDATA.
The section starts with "OUTFILES STARTING" and ends with "OUTFILES FINISHED."
Both keyword lines must be present or AERMINUTE will abort.

An example input file for Richmond, VA for 2005 is shown in Figure 6. The data period to
process is January through December 2005.  The IFWGROUP status is set to yes with a
commission date of March 28, 2007. Because the IFW commission date is after the end date of
December 31, 2005, AERMINUTE will reset the IFWGROUP status to no and notify the user.
The DATAFILES section contains the 12 monthly 1-minute data files as downloaded from the
NCDC website.  The optional 5-minute data processing is also included. The optional
comparison to the standard observations will be performed with the standard observations file
listed. This should be the same file as read into AERMET for stage 1 processing of NWS data.
Finally, the output files are listed and the optional summary file will be output. Since
comparisons against the standard observations will be made, the optional COMPFILE must be
listed as well.  The optional  1-minute and 5-minute comparison file, 1_5_FILE and 5-minute
substitution file, SUB5FILE are also listed.
                                         12

-------
 STARTEND 1 2005 12 2005

 IFWGROUP y 3 28 2007

 DATAFILE STARTING
 64050KRIC200501.dat
 64050KRIC200502.dat
 64050KRIC200503.dat
 64050KRIC200504.dat
 64050KRIC200505.dat
 64050KRIC200506.dat
 64050KRIC200507.dat
 64050KRIC200508.dat
 64050KRIC200509.dat
 64050KRIC200510.dat
 64050KRIC200511.dat
 64050KRIC200512.dat

 DATAFILE FINISHED

 DAT5FILE STARTING
 64010KRIC200501.dat
 64010KRIC200502.dat
 64010KRIC200503.dat
 64010KRIC200504.dat
 64010KRIC200505.dat
 64010KRIC200506.dat
 64010KRIC200507.dat
 64010KRIC200508.dat
 64010KRIC200509.dat
 64010KRIC200510.dat
 64010KRIC200511.dat
 64010KRIC200512.dat

 DAT5FILE FINISHED

 SURFDATA STARTING
 724010-13740-2005.dat
 SURFDATA FINISHED

 OUTFILES STARTING
 HOURFILE richmod_05.dat
 SUMMFILE minute_summary_richmond.csv
 COMPFILE checks_richmond.csv
 1_5_FILE  ric_15_comps.csv
 SUB5FILE ric_sub_5.csv
 OUTFILES FINISHED
Figure 6. Example AERMINUTE control input file.
                                           13

-------
4.2. File checking

Once AERMINUTE has read the input control file, the program reads the list of 1-minute data
files and checks that each file exists and that there are no duplicate filenames. If there are non-
existent files or duplicate names, AERMINUTE notifies the users of the filenames and aborts. A
similar procedure is done for the 5-minute data files in the DAT5FILE section and the standard
observation data files in the SURFDATA section.

4.3 Record processing

4.3.1 1-MINUTE DATA FILES

Since AERMINUTE reports running 2-minute average winds every minute, non-overlapping
minutes are used in the hourly averages.  That is, if winds listed at minute 2 are used, winds
listed at minute 3 are not used but winds listed at minute 4 are used as they do not overlap with
the minute 2 winds.  Even minute winds are given first priority  in calculating hourly average
winds.  The times listed in the data files are assumed to be the ending time, i.e. the winds listed at
minute 2 are for minutes 1 and 2.  Winds from minute 1 of any  hour are not used at all since the
2-minute average wind spans two hours. The hourly averaged winds are assumed to be hour
ending, i.e. hour 1 average winds are from hour 0, minutes 2, 4, 6, etc. Winds for hour 1, minute
0 are also part of the hour 1 averaged winds. Winds in the files are reported for hours 0 through
23. During processing, hour 0 minute  0 winds become hour 24 minute 60 winds of the previous
day, since  AERMET and AERMOD process hours 1 through 24.

Another issue with 1-minute ASOS wind data that influences the procedures used to process the
data is that all ASOS wind speeds, including 1-minute and ASOS data and ASOS data in
standard archives, are truncated, rather than rounded, to whole knots.  Note that the hourly-
averaged wind speeds generated by AERMINUTE are not adjusted to account for the bias
introduced by truncating the ASOS wind speeds to whole knots. However, the AERMET
processing, beginning with version 11059, applies the truncation adjustment for all ASOS wind
speeds, including those derived from 1-minute data (EPA, 201 Ob).

The following steps are followed when reading a record from the  1-minute files:

   •   The minute in LST is read from the record.  If the  minute is less than zero or equal to one,
       the processing for that record is stopped and the next record is read.
   •   If the minute is valid (not less than zero or equal to one), the record format of the wind
       data section is checked.  For details about the record format quality check see Appendix
       A.
   •   If the record passes the quality  control check, the date in LST is read from the record.  If
       the date is outside the processing range, processing stops for the record and processing
       for the next record begins.
   •   If the record's date is inside the processing date range, the 2-minute average wind speed
       and direction are processed as:
          o  If the wind speed is less than 2 knots:
                                          14

-------
                 •  If the station is not part of the IFW group, or the station is part of the IFW
                    group and the date and time of the record is before the station's IFW
                    commission date, the 2-minute wind is considered to be "calm" and the
                    wind speed is set to half the instrument threshold, i.e., 0.51 m/s (1 knot),
                    consistent with guidance for processing site-specific wind data. The wind
                    speed will be used in calculating the hourly average wind speed but the
                    direction is considered to be invalid and will not be used in calculating the
                    hourly wind direction.
                 •  If the station is part of the IFW group and the record's date is on or after
                    the station's IFW commission date, the minute is flagged as non-calm and
                    the speeds are  converted from knots to m/s, since the threshold for sonic
                    anemometers is effectively zero.  The wind speed and wind direction are
                    used in hourly averages.
          o   If the wind speed is 2 knots or greater, regardless of IFW group status and date,
              the 2-minute wind speed is converted from knots to m/s.  The wind speed and
              wind direction are used in hourly averages.
          o   AERMINUTE uses a unit vector approach to calculate the hourly-averaged wind
              direction from the 2-minute average values. The 2-minute wind directions are
              converted to x and y-component wind directions using Equations 1 and 2 below,
              which are the functions inside the summations of equations 6.2.17 and 6.2.18 of
              the meteorological guidance document (EPA, 2000).
              vx=-sin0                                                         (1)
              vy=-cos0                                                         (2)
              where vx and vy are the x- and y-components of the 2-minute wind direction 9.

As noted in the bullets above, while reading the 1-minute data files, AERMINUTE determines if
any records are within the data period set by the dates listed in STARTEND of the input file. If
no records are within the data period, AERMINUTE notifies the user of the earliest and latest
dates in the data files and aborts.  Such a situation may occur because the user entered the wrong
dates on STARTEND or the wrong data files in the DATAFILES section of the input file.

4.3.2 5-MINUTE DATA FILES

For winds, the values recorded in the 5-minute data files are the 2-minute winds at the 5 minute
times, 5 minutes after the hour, 10 minutes after the hour, etc.  As noted in Section 3, the 5-
minute data files are more consistent in format than the  1-minute data files.

The following steps are followed when reading a record from the 5-minute files and are similar
to the processing of the 1-minute files discussed in Section 4.3.1:

    •  The minute in LST is read from the record.  If the minute is less than zero the processing
       for that record is stopped and the next record is read.
    •  If the minute is valid (not less than zero), the record format of the wind data section is
       checked.  For details about the record format quality check see Appendix A.
                                           15

-------
   •   If the record passes the quality control check, the date in LST is read from the record. If
       the date is outside the processing range, processing stops for the record and processing
       for the next record begins.
   •   If the record's date is inside the processing date range and wind is not calm or variable,
       the 2-minute average wind speed and direction are processed as discussed in Section
       4.3.1.
   •   Because the wind direction is reported to the nearest ten degrees, a randomized wind
       direction is calculated for the 5-minute wind direction. This step is analogous to what is
       done in AERMET stage 3 for wind directions at NWS sites. For example, a wind
       direction of 250° is reported in the 5-minute data, AERMINUTE resets the wind direction
       to a number between 245° and 254°, inclusive.

As noted in the bullets above, while reading the 5-minute data files, AERMINUTE determines if
any records are within the data period set by the dates listed in STARTEND of the input file. If
no records are within the data period, AERMINUTE notifies the user of the earliest and latest
dates in the data files and notifies the user no 5-minute data substitution will occur.  Such a
situation may occur because the user entered the wrong dates on STARTEND or the wrong data
files in the DATAFILES section of the input file.

4.4 Data substitution and flagging 2-minute values for hourly averaging

After processing the 1-minute data files and any 5-minute data files, AERMINUTE substitutes
any missing or calm 1-minute values with the values from the 5-minute data if the 5-minute
value for the minute is not missing or calm (wind direction=0° and wind speed=0 m/s)2. After
any data substitution, AERMINUTE determines if any odd minutes are to be used and which
hours are to be averaged. AERMINUTE will use all non-overlapping valid minutes to calculate
an hourly average. For each valid odd minute (calm or non-calm), if the even minutes just
before and just after the odd minute are not valid, the odd minute is flagged as a minute that can
be used. For example for hour 1, if minute 3 is valid but minutes 2 or 4 are also valid, minute 3
is not used. However, if both minutes 2 and 4 are not valid, minute 3 can be used in the hourly
averaging.

After determining all minutes that can be used for averaging,  AERMINUTE determines the
status of the hour:

   •   If an hour has at least two usable non-calm observations in the first half of the hour
       (minutes 2 through 30) or at least one usable non-calm observation in the last half of the
       hour (minutes 31 through 60) and,
          o   If 50% or more of the usable observations are non-calm, then an hourly wind
              speed and direction will be calculated for  the hour or,
          o   If less than 50% of the observations are non-calm, then the hour is considered
              calm and the wind speed and direction are set to zero.
   •   If the hour does not meet either of the number of observations per half hour above,
       average wind speed and direction will not be calculated for the hour.
2 Herafter, 1-minute data refers to the original 1-minute with substituted 5-minute data.

                                           16

-------
Only non-calm observations are considered because the calm wind directions are not used. If an
hour contained only calm minutes, no wind direction can be computed for the hour, and the
hourly-average is coded as missing.

4.5 Quality control

Before hourly averaging of the 1-minute winds is performed, the user can direct AERMINUTE
to read the standard hourly observations file that is read into AERMET. Currently this is limited
to ISH (DS-3505) files. AERMINUTE reads the standard observations and compares the winds
to the winds from the 1-minute data for times when there are observations in the both standard
observations files and the 1-minute files.  The comparison is done as a quality control step on the
1-minute data to validate against quality controlled data from the standard observations.  The
following checks are performed:

   •   For standard observations that are calm, the corresponding 1-minute data are checked for:
          o  The number of missing 1-minute observations
          o  The number of 1-minute observations that are less than 3 knots
          o  The number of 1-minute observations that are 3 knots and greater
   •   For standard observations that are variable, the corresponding 1-minute data are checked
       for:
          o  The number of missing 1-minute observations
          o  The number of non-missing 1-minute observations
          o  The number of observations where the absolute difference in the 1-minute wind
             speed and the standard observation wind speed are:
                 •  0 m/s
                 •  0.1 or 0.2 m/s
                 •  0.3 through 0.5 m/s (inclusive)
                 •  0.5 through  1.0 m/s (inclusive)
                 •   1.0 through 3.0 m/s (inclusive)
                 •  3.0 through 5.0 m/s (inclusive)
                 •  > 3.0 m/s
   •   For standard observations that are normal or valid, the corresponding  1-minute data are
       checked for:
          o  The number of missing 1-minute observations
          o  The number of non-missing 1-minute observations
          o  The number of observations where the absolute difference in the 1 -minute wind
             speed and the standard observation wind speed are:
                 •  Om/s
                 •  0.1 or 0.2 m/s
                 •  0.3 through 0.5 m/s (inclusive)
                 •  0.5 through  1.0 m/s
                 •   1.0 through 3. Om/s
                 •  3.0 through 5. Om/s
                 •  > 5.0 m/s
                                           17

-------
          o  The number of observations where the absolute difference in the 1 -minute wind
             direction (nearest 10 degrees) and standard observations are:
                 •   0 degrees
                 •   10 degree increments (10, 20, 30, etc.)

4.6 Averaging

Hourly averaged wind speeds are the arithmetic averages of the wind speeds for all valid minutes
for the hour, including those flagged as calm, using half the threshold (Equation 3).

    -i N
5 =-y>,                                                                      (3)
    A/tr '

Where S is the hourly averaged wind speed, N is the number of valid observations or minutes for
the hour, and s; is the two minute wind speed for minute i.

For wind directions,  the x- and y-components of non-calm observations are summed according to
equations 6.2.17 and 6.2.18 of the meteorological  monitoring guidance (EPA, 2000),
summarized in equations 4 and 5 below with vxi and vyi calculated in equations 1 and 2. The
hourly wind direction is calculated based on a unit-vector approach, using equation 6.2.19 of the
meteorological monitoring guidance (EPA, 2000), summarized in equation 6.
                Y
6 = Arc tax/  + CORR                                                      (6)
Where Vx and Vy are the hourly averaged x- and y-components of the wind respectively, 0 is the
hourly averaged wind direction, N is the number of observations used for the hour, and
         = 180 for Vx > 0 and Vy > 0 or Vx < 0 and Vy > 0
 CORR  =   0 for Vx < 0 and Vy < 0
         = 360forFx>OandF^<0

5.  Outputs

Up to eight output files are generated by AERMINUTE, depending on the user options:

   •   Hourly averaged winds file  (HOURFILE), formatted for input to AERMET Stage 2
   •   Good_records.dat

                                          18

-------
   •   Bad_records.dat
   •   Check_records.dat
   •   Optional summary file (SUMMFILE)
   •   Optional standard observations vs. 1-minute data file (COMPFILE)
   •   Optional 1-minute and 5-minute comparison file (1_5_FILE)
   •   Optional file listing of minutes substituted with 5-minute data (SUB5FILE)
   •   AERMINUTE.log

5.1 Hourly winds (HOURFILE)

The hourly average winds file is the file that is input to AERMET stage 2 processing.  The
filename is set by the user using the HOURFILE keyword in the control input file. The file
format of the hourly averaged file is shown in Figure 7. The first line of the file contains
information about the AERMINUTE program and the station: AERMINUTE version number,
station WBAN, 4-character station  call sign, IFW status, IFW date, and beginning with
AERMINUTE version 15272, whether 5-minute data is used  ("Y" for yes, "N" for no). If the
station is part of the IFW group for the data period, the IFW status is "Y." Otherwise it is "N."
The IFW flag is considered for the data period only. If the station becomes part of the IFW
group after the data period, the flag will be set to "N."  If the station is part of the IFW group for
the data period, the IFW installation date is listed as a character string composed of 4-digit year,
2-digit month, and 2-digit day. If the station is not part of the IFW group for the data period, the
IFW date is not listed. For the example shown Figure 7, Richmond International Airport (KRIC)
does not become part of the IFW group until March 28, 2007, so the IFW status is no and the
date is not included.

Beginning with line two, the hourly averaged winds are listed. The order of variables is listed in
Figure 7. AERMINUTE writes the output in a fixed format, but AERMET reads the data in free
format, i.e. the data fields are separated by spaces.  AERMINUTE writes to a fixed format for
visual purposes only.  For hours that are missing or not considered valid due to an insufficient
number of non-calm observations, the wind speed and direction are both set to 999.0.  Calm
hours are denoted by a wind speed of 0.0 and wind direction of 0.0.
                                          19

-------
 AERMINUTE Version 15272  WBAM: 13740    Call sign: KRIC     IFW: N  5-MIN USED:  Y
  5111   2.50 201.0
  5112   2.29 208.0
  5113   2.35 197.0
  5114   1.05 199.0
  5115   0.97 188.0
  5116   2.21 193.0
  5117   2.28 193.0
  5118   1.78 183.0
  5119   0.00   0.0
                                       Variables
 2-digit year
 2-digit month
 2-digit day
 2-digit hour (1-24)
 Wind speed (m/s)
 Wind direction (degrees)
Figure 7.  Example hourly averaged winds and order of variables.

5.2 Record check files

AERMINUTE generates three files that contain the full 1-minute data records as read from the 1-
minute data files, depending on whether AERMINUTE determines that the record contains
"good" data that can be used to calculate the hourly averages, the record do not meet strict
quality control checks on the format but may contain useable data, or the record is unusable due
to serious formatting problems. Each of these categories of data records are written to separate
files in order to fully document the data that were used or rejected by AERMINUTE.

The file 'good_records.dat' contains the records from the 1-minute files that meet the strict
quality control checks in AERMINUTE and the winds from these files are considered valid. A
detailed description of the quality control  check is in Appendix A.  These records include those
observations for odd minutes that may or  may not be used in hourly averages. The user should be
able to rename good_records.dat (to avoid overwriting the data during processing), replace the
files listed in inputfiles.txt with the renamed file and  rerun AERMINUTE and get the exact same
answers as using the full list of inputs. An example ofgood_records.dat is shown in Appendix
A.

The second file is called  'check_records.dat'.  This is a file containing records that  did not meet
the strict quality control of AERMINUTE and are not used in calculating hourly averages, but
the wind observations are close to the locations, i.e. column locations, set by strict quality
control. These records also contain the flags detailing the quality control failures.  See
Appendix  A for an example ofcheck_records.dat.  Often, manual editing by the user could allow
these records to be used by AERMINUTE. When viewing the data, the user should check
observations in good_records.dat from the same hour to determine if data is reasonable when
compared  to other observations for the hour.  If there is any doubt about the record, the
'check_records.dat' data should not be used in the hourly averages.

A third file output by AERMINUTE is called 'bad_records.dat'.  This file contains records from
the 1-minute files that did not meet the strict quality controls in AERMINUTE, and are unlikely

                                           20

-------
to contain usable data. This file also includes flags indicating what quality control checks failed.
These records do not meet the criteria outlined for acceptance into good_records.dat and are not
used.  See Appendix A for details about the flags.  This file should be reviewed by the user since
the quality and formatting of the 1-minute files varies from station to station and by year.

If the user determines that additional valid data can be obtained by appropriately editing the
'check_records.dat' data file,  the user can rename the 'good_records.dat' and
'check_records.dat' files, replace the files listed in the control input file with these renamed files
and rerun AERMINUTE to get new hourly averages.

Similar files to the good, bad, and check record files for the 1-minute files are generated for the
5-minute data files, when processed. These files are called 'good_records_5.dat' and
bad_records_5.dat.'  These files are analogous to 'good_records.dat' and 'bad_records.dat.' A
third file called 'calm_variable_5.dat' is generated for the 5-minute data and it contains the
records that are calm or variable in  the 5-minute data.  These are records where the winds are
reported as 'OOOOOKT' for calms and contain the string 'VRB' in the wind direction field for
variable winds, i.e. 'VRB03KT. Records in 'bad_records_5.dat' and 'calm_variable_5.dat' are
not used in 5-minute data processing.

5.3 Summary file (SUMMFILE)

AERMINUTE can also output a comma delimited summary file that is named via the optional
SUMMFILE keyword in the AERMINUTE input file. The SUMMFILE lists each hour in the
data period, including those not in the 1-minute files, with counts of minutes for the hour and can
be used as a quality assurance check against the hourly averaged winds file. Also included for
each hour are the minimum and maximum 2-minute wind speed and direction used in the hourly
calculations, as well as the hourly averaged wind speed and direction that are listed in the
HOURFILE. The minimum wind speed and direction are unpaired in time, i.e. they may not
represent the same time. The same is true for the maximum wind speed and direction. An
example of the file is shown in Figure 8, along with the format.  In this example, 5-minute data
was not read by AERMINUTE. Figure 9 shows an example summary file with 5-minute
information. When 5-minute data is read by AERMINUTE, the summary file lists the number 5-
minute values substituted into the 1-minute data as well as the source (1 or 5 minute data) of the
minimum and maximum wind speeds and minimum and maximum wind directions. If there
were observations for an hour, the keep flag for the hour is "V", "C", or "NV."  Hours with a
keep flag of "V"  have hourly  averaged winds in the hourly average winds file.  Hours with a
keep flag of "C" are calm hours. Hours with a keep flag of "NV" had observations for the hour
but did not meet the completeness criteria for the hour. Hours that were not in the files or had no
minutes in the file that met the quality control criteria are denoted by "M" for the keep flag.
After the keep flag, the IFW status  of the hour is shown.  A value of 0 means that the station was
not part of the IFW group for that hour. Missing hours will always have a value of 0 for the IFW
group. A value of 1  denotes the station was part of the IFW group for the hour. For the minute
counts, the number of total minutes read for the hour, total calms, even minutes, even calms, odd
minutes, odd calms,  odd minutes used in hourly averages, and odd calms used in hourly averages
are listed. When processing 5-minute data files, these counts include any substituted 5-minute
data. The maximum number  of total minutes or total calms for an hour is 59. The maximum

                                          21

-------
number of even minutes or even calms for an hour is 30.  The maximum number of odd minutes
or odd calms is 29 (minute 1 is excluded). The maximum number of odd minutes used or odd
calms used is 29.  If the number of odd minutes used or odd calms used is 29, then the number of
even minutes should be zero, since overlapping observations are not used. When reviewing the
minute counts and looking at the raw 2-minute winds, the user should remember that the counts
for an hour are for minutes whose actual reporting hour is the hour before; i.e. counts for 0100
are for minutes whose reported hour in the 1-minute files is hour 00.
                                         22

-------
Date,hr,flag,IFW flag,total minutes,total calms,total even,even calms,total odd,total odd calm,odd used,odd calms
used,min speed,avg speed,max speed,min dir,avg dir,max dir
20050101,01,V,0,59, 0,30, 0,29, 0,0, 0, 1.53, 2.50, 3.57,182,201,217
20050101,02,V,0,59, 0,30, 0,29, 0,0, 0, 1.53, 2.29, 2.55,191,208,225
20050101,03,V,0,59, 0,30, 0,29, 0,0, 0, 1.53, 2.35, 3.06,184,197,223
20050101,04,V, 0,59,18,30, 9,29, 9, 0, 0, 0.51, 1.05, 2.04,176,199,279
20050101,05,V, 0,59,28,30,14,29,14, 0,0, 0.51, 0.97, 1.53,157,188,209
20050101,06,V,0,59, 0,30, 0,29, 0,0, 0, 1.53, 2.21, 3.06,186,193,199
Variables
Date
Hr
Flag
IFWflag
Total minutes
Total calms
Total even
Even calms
Total odd
Total odd calm
Odd used
Odd calms used
Min speed
Avg speed
Max speed
Min dir
Avg dir
Max dir
Date of observation (YYYYMMDD)
Hour of observation (01-24)
Flag denoting if hour is valid (V), calm (C), non-valid (NV), or missing (M)
Integer code corresponding to IFW status (0=not IFW during data period, l=part of IFW group
during data period)
Total number of minutes read from 1 -minute files for hour
Total number of calm minutes for hour
Total even minutes read from files for hour
Total number of even minutes with calm winds for hour
Total odd minutes read from files for hour
Total number of odd minutes with calm winds for hour
Total odd minutes used in hourly average winds for hour
Total number of odd minutes with calm winds used in hour average winds for hour
Minimum 2-minute wind speed (m/s) for the hour
Hourly averaged wind speed (m/s)
Maximum 2-minute wind speed (m/s) for the hour
Minimum 2-minute wind direction (m/s) for the hour
Hourly averaged wind direction
Maximum 2-minute wind direction (m/s) for the hour
Figure 8. Format of SUMMFILE when 5-minute data is not read by AERMINUTE.
                                                   23

-------
Date,hr,flag,IFW flag,total minutes,total 5-min subs,total calms,total even,total even 5-min subs,even calms,total odd,total odd 5-min subs,total
odd calm,odd used,odd calms used,min speed,min speed source,avg speed,max speed,max speed source,min dir,min dir source,avg dir,max
dir,max dir source
20050101,01,V, 0,59,0, 0,30, 0,0,29, 0,0,0, 0, 1.53,1, 2.50, 3.57,1,182,1,201,217,1
20050101,02,V, 0,59,0, 0,30, 0,0,29, 0,0,0,0, 1.53,1, 2.29, 2.55,1,191,1,208,225,1
20050101,03,V, 0,59,0, 0,30, 0,0,29, 0,0,0,0, 1.53,1, 2.35, 3.06,1,184,1,197,223,1
20050101,04,V,0,59, 0,18,30, 0,9,29,0, 9, 0,0, 0.51,1, 1.05, 2.04, 1,1' '6, 1,199, ,279, 1
20050101,05,V, 0,59, 0,28,30, 0,14,29, 0,14, 0,0, 0.51,1, 0.97, 1.53,1,157,1,188,209,1
20050101,06,V, 0,59,0, 0,30, 0,0,29, 0,0,0,0, 1.53,1, 2.21, 3.06,1,186,1,193,199,1
Variables
Date
Hr
Flag
IFWflag
Total minutes
Total 5-min subs
Total calms
Total even
Total even 5-min subs
Even calms
Total odd
Total odd 5-min subs
Total odd calm
Odd used
Odd calms used
Min speed
Min speed source
Avg speed
Max speed
Max speed source
Min dir
Min dir source
Avg dir
Max dir
Max dir source
Date of observation (YYYYMMDD)
Hour of observation (0 1 -24)
Flag denoting if hour is valid (V), calm (C), non-valid (NV), or missing (M)
Integer code corresponding to IFW status (0=not IFW during data period, l=part of IFW group during data period)
Total number of minutes read from 1 -minute files for hour
Total number of minutes 5 -minute data was substituted into 1 -minute data
Total number of calm minutes for hour
Total even minutes read from files for hour
Total number of even minutes substituted with 5 -minute data
Total number of even minutes with calm winds for hour
Total odd minutes read from files for hour
Total number of odd minutes substituted with 5 -minute data
Total number of odd minutes with calm winds for hour
Total odd minutes used in hourly average winds for hour
Total number of odd minutes with calm winds used in hour average winds for hour
Minimum 2 -minute wind speed (m/s) for the hour
Source of minimum wind speed (l=l-minute data, 5=5-minute data)
Hourly averaged wind speed (m/s)
Maximum 2-minute wind speed (m/s) for the hour
Source of maximum wind speed (l=l-minute data, 5=5-minute data)
Minimum 2-minute wind direction (m/s) for the hour
Source of minimum wind direction (l=l-minute data, 5=5-minute data)
Hourly averaged wind direction
Maximum 2-minute wind direction (m/s) for the hour
Source of maximum wind direction (l=l-minute data, 5=5-minute data)
Figure 9. Format of SUMMFILE when 5-minute data is read by AERMINUTE.
                                                   24

-------
5.4 Comparison file (COMPFILE)

AERMINUTE can output the optional COMPFILE that compares the standard observations
against the 1-minute observations. The file is comma delimited and the format of the file is
shown in Figure 10 using Richmond, VA (RIC) as an example. The file can be imported into a
spreadsheet program where the user can look at specific observations to determine if the 1-
minute data and the standard observations are in reasonable agreement. For minutes where
either the standard observation is missing or the 1-minute data is missing, speeds and directions
are listed as 999 and differences as -999.
                                          25

-------
date(yyyymmdd),hour,minute,calm flag, 1 -min dir, 1 -min dirlO, 1 -min speed, 1 -min speed 1 ,obs. dir,obs. speed,dirdiff,speeddiff,wind flag,qc flag
20050101,1,0,0, 209.0, 210.0, 1.5, 1.5, 210.0, 2.1, 0.0, 0.6,N,5
20050101,2,0,0, 198.0, 200.0, 2.0, 2.0, 999.0, 999.9, -999.0, -999.0,9,9
20050101,3,0,0, 223.0, 220.0, 1.5, 1.5, 999.0, 999.9, -999.0, -999.0,9,9
20050101,4,0,0, 184.0, 180.0, 1.0, 1.0, 999.0, 999.9, -999.0, -999.0,9,9
20050101,5,0,0, 185.0, 190.0, 1.5, 1.5, 999.0, 999.9, -999.0, -999.0,9,9
20050101,6,0,0, 193.0, 190.0, 2.5, 2.6, 999.0, 999.9, -999.0, -999.0,9,9
Variables
Date(yyyymmdd)
Hour
Minute
Calm flag
1 -min dir
1-mindirlO
1 -min speed
1 -min speed 1
Obs. dir
Obs. speed
dirdiff
speeddiff
Wind flag
QCflag
Date of observation with 4-digit year, month, and day
Hour of observation ( 1 -24)
Minute of observation
Integer flag denoting if 1 -minute observation is considered calm (0=non-calm,l=calm)
1 -minute direction from 1 -minute data files
1 -minute direction from 1 -minute data files rounded to nearest ten degrees
1 -minute wind speed (m/s)
1 -minute wind speed rounded to nearest tenth of a m/s
Wind direction from standard observations
Wind speed (m/s) from standard observation
Difference between 1 -minute wind direction and standard observation direction, i.e. 1-min dirlO - obs. dir
Difference between 1 -minute wind speed and standard observation speed, i.e. 1-min speed 1- obs. speed
Wind observation type code from standard observation
C=calm
N=normal
R=60 minute average speed
Q=squall
V=variable
9=missing
Wind observation speed quality code from standard observation
0 = Passed gross limits check
1 = Passed all quality control checks
2 = Suspect
3 = Erroneous
4 = Passed gross limits check , from DSI-3280 or NCDC ASOS/AWOS
5 = Passed all quality control checks, from DSI-3280 or NCDC ASOS/AWOS
6 = Suspect, from DSI-3280 or NCDC ASOS/AWOS
7 = Erroneous, from DSI-3280 or NCDC ASOS/AWOS
9 = Passed gross limits check if element is present
Figure 10. Format of COMPFILE.
                                                   26

-------
5.5 1-minute and 5-minute comparison file (1  5  FILE)

AERMINUTE can output the optional 1-minute vs. 5-minute comparison file, 1_5_FILE when
5-minute data is processed by AERMINUTE.  This file can be used to determine the agreement
between the 1-minute and 5-minute data after processing discussed in Section 4.3.  A sample file
with format is shown in Figure 11. Note, that in some cases the winds between the 1- and 5-
minute data may not be equal.  This may be due to multiple observations in one or both datasets
for a particular time. In such occurrences, AERMINUTE keeps the latest of the observations.
For observations where the 5-minute indicates a calm, it must be noted that the calms and
variable processing of the METAR code is used on the 5-minute data.
date(yyyymmdd),hour,minute,l-min dir,l-min speed,5-min 10 deg dir,5-min dir,5-min speed
20050101,1,5,181, 3.06,180,183, 3.06
20050101, 1,10,197, 3.06,200,196, 3.06
20050101, 1,15,197, 2.55,200,196, 2.55
20050101, 1,20,194, 3.06,190,194, 3.06
20050101, 1,25,195, 3.06,200,202, 3.06
20050101,4,10,244, 0.51, 0, 0, 0.00
20050101,13,55,270, 1.53,VRB,VRB, 1.53
Variable
Date(yyyymmdd)
Hour
Minute
1-mindir
1-min speed
5-min 10 deg.
5-min dir
5-min speed
Date of observation with 4-digit year, month, and day
Hour of observation (1-24)
Minute of observation
1 -minute dataset wind direction
1 -minute dataset wind speed (m/s)
5-minute dataset wind direction to nearest 10°. 'VRB'
indicates variable wind direction
5-minute dataset randomized wind direction. 'VRB'
indicates variable wind direction
5-minute dataset wind speed (m/s)
Figure 11. Format of 1_5_FILE.

5.6. List of substituted minutes (SUB5FILE)

Another optional output file from AERMINUTE when processing 5-minute data is a comma
delimited file that lists the dates and times where 5-minute data is substituted into the 1-minute
data, SUB5FILE. For such times, the 1-minute data is missing and 5-minute data is not missing
and not calm. Figure 12 shows a sample file and format of the file.
                                         27

-------
date(yyyymmdd),hour,minute,5-min dir,5-min speed
20050110,18,50,26, 2.04
20050110,18,55,50, 4.59
20050110,18,60,69, 3.57
20050110,19,5,60, 3.06
20050110,19,10,63, 3.57
20050110,19,15,69, 3.57
20050110,19,20,66, 3.57
Variable
Date(yyyymmdd)
Hour
Minute
5-min dir
5-min speed
Date of observation with 4 -digit year, month, and day
Hour of observation (1-24)
Minute of observation
5 -minute dataset randomized wind direction.
5 -minute dataset wind speed (m/s)
Figure 12. Format of SUB5FILE.

5.7. Log file

During processing AERMINUTE writes information to the screen and a log file called,
aerminute.log. In Figure 13, a summary of the user inputs is listed. First, the AERMINUTE
version number and program start date and time are listed.  Listed below those lines are a
summary of the processing dates and IFW status as well notifying the user that 5-minute data
will be read.  In this example, the data period is from January 1 through December 31 2005. The
user entered that the station is part of the IFW group with a start date of March 28, 2007.
AERMINUTE notifies the user that this date is outside the range of processing dates.  Therefore,
the IFW status of the station will be set to no.
 AERMINUTE  VERSION 15272
  Program start date & time:  September 30,  2015   11:49:18 AM

  ################################ INPUTS  ################################

  Control input file: aerminute.inp
  Summary of dates
  Start date:   1  1 2005
  End Date:  12 31 2005

  Station is part of IFW  group
  With start date of  3 28  2007
  But is  outside of the range of processed dates

  5-minute  files will be  read
  ###################################################################
Figure 13. Input summary section of aerminute.log.

After the user input summary, AERMINUTE  checks for existence of the files listed in the
DATAFILES section and if there are any duplicate filenames.  The same is done for the
DAT5FILES section, if listed.  Also, if any files are listed in the SURFDATA section, the
existences of the listed files are checked as well to see if there are any duplicate filenames. In
                                        28

-------
Figure 14, AERMINUTE finds 12 1-minute data files without any duplicate names as well as 12
5-minute data files without any duplicate names. AERMINUTE finds one standard observation
file to read and reads the file.
 ########################  1  -MINUTE DATA  FILES CHECK ######################

  Checking  for duplicate filenames

  No duplicate filenames found

  All  files  found...
  Number  of  files to process:   12

  ########################################################

  ######################## 5 -MINUTE DATA FILES CHECK ######################

  Checking  for duplicate filenames

  No duplicate filenames found

  All  files  found...
  Number  of  files to process:   12

  ########################################################

  #########################  SURFACE FILES CHECK ##########################

  Obtaining  surface data filenames

  Checking  for duplicate surface filenames

  No duplicate filenames found

  Reading surface files
  Reading surface file 724010-13740-2005

  #############################################################
 Figure 14. Data file check section ofAERMINUTE.LOG

After reading the standard observation files, AERMINUTE reads the 1-minute data files and lists
the files as they are processed. After processing the files, AERMINUTE lists the number of
processed and non-processed records. Under the processed record counts, the number of records
outside the data period set by the start and end dates are listed and the number of records within
the data period are also listed. Under the non-processed records count, subtotals are provided for
records that are minute 1, bad, need checking, or had a bad record for the time. The last subtotal
should be zero, unless there was a severe formatting problem with a file. After the subtotal of
records, AERMINUTE lists the number observations that failed the various quality assurance
checks. These counts are not mutually exclusive; some records may fail multiple checks.  Figure
15 lists the record totals and quality assurance checks totals. Note that for the non-processed


                                        29

-------
record counts and the number of observations that failed various quality control checks, the
counts include observations outside and within the data period set by the start and end dates.
                                            30

-------
 ######################## 1-MIN FILE PROCESSING #########################

  Reading 64050KRIC200501.dat

  Reading 64050KRIC200502.dat

  Reading 64050KRIC200503.dat

  Reading 64050KRIC200504.dat

  Reading 64050KRIC200505.dat

  Reading 64050KRIC200506.dat

  Reading 64050KRIC200507.dat

  Reading 64050KRIC200508.dat

  Reading 64050KRIC200509.dat

  Reading 64050KRIC200510.dat

  Reading 64050KRIC200511.dat

  Reading 64050KRIC200512.dat

  All files read...

  RECORD FORMAT QA

  Total number of records read from files:           458902
  Number of processed records:                       450677
  Number of records outside data period:                  1
  Number of records inside data period:              450676
  Number of non-processed records:                     8225
  Number of records for minute 1:                      7646
  Number of bad records:                                437
  Number of check records:                              142
  Number of bad minute records:                           0
  NOTE: Number of non-processed records includes records outside data period

  QA FLAG SUMMARY COUNT
  FLAG                      DESCRIPTION                                      RECORDS
   1    Non-numeric characters in columns 68 through 90                          246
   2    Text string with leading zero in columns 66 through 90                    93
   3    4-character numeric string found in columns 30 through 113               164
   4    Column 30 is non-blank                                                    67
   5    No number in columns 70-74 for 2-minute wind direction                   283
   6    No number in columns 76-79 for 2-minute wind speed                       296
   7    No number in columns 82-84 for 5-second gust wind direction              284
   8    No number in columns 87-89 for 5-second gust wind speed                  291
   9    Number in column 90                                                      196
  10    Wind speeds and directions outside allowable ranges                        4
  11    Other flags switched on, but winds may be okay                           142
  11    Other flags switched on, but record is bad                               437

  ########################################################################
Figure 15.  1-minute file processing section of aerminute.log.
                                          31

-------
If 5-minute data is to be read by AERMINUTE, AERMINUTE reads the files and notifies the
users that the files are being processed (Figure 16).
 ######################### 5-MIN FILE PROCESSING ########################

 Reading 64010KRIC200501.dat

 Reading 64010KRIC200502.dat

 Reading 64010KRIC200503.dat

 Reading 64010KRIC200504.dat

 Reading 64010KRIC200505.dat

 Reading 64010KRIC200506.dat

 Reading 64010KRIC200507.dat

 Reading 64010KRIC200508.dat

 Reading 64010KRIC200509.dat

 Reading 64010KRIC200510.dat

 Reading 64010KRIC200511 .dat

 Reading 64010KRIC200512.dat

 All files read...
Figure 16. 5-minute file processing section of aerminute.log.

After reading the 1-minute and any 5-minute data files, AERMINUTE substitutes the 5-minute
data into the 1-minute data, if 5-minute data is present.  AERMINUTE then compares the
updated 1-minute data against the standard observations as outlined in Section 4.5, if the optional
COMPFILE keyword is specified. AERMINUTE lists the summaries for standard calm winds,
standard missing winds, standard variable winds, and standard valid winds in
AERMINUTE.LOG (Figure  17).
                                           32

-------
 ############################ DATA QC  SUMMARY  ############################

 STANDARD CALMS
    Number of standard observation calms:    1038
    Number of missing 1-minute winds:          170
    Number of 1-minute winds < 3  knots:        842
    Number of 1-minute winds >= 3 knots:        28

  STANDARD MISSING WINDS
    Number of standard observation missing winds:    3697
    Number of missing 1-minute winds:                 274
    Number of non-missing 1-minute winds:            3423

 STANDARD VARIABLE WINDS
    Number of standard observation variable winds:     132
    Number of missing 1-minute winds:                   17
    Number of non-missing 1-minute winds:              115

  VARIABLE WINDS:  SPEED DIFFERENCES  (M/S)
  Speed difference     Number of  minutes
          0                  65
     <= 0.2                  29
  0.3-0.5                   7
  0.5-1.0                   2
  1.0 -
  3.0 -
  STANDARD VALID WINDS   Number of standard observation  valid winds:    4488
    Number of missing 1-minute winds:               677
    Number of non-missing 1-minute winds:          3811

  VALID WINDS:  SPEED DIFFERENCES  (M/S)
  Speed difference     Number of minutes
          0                2223
     <= 0.2                1099
        0.5                 198
          .0                 134
          .0                 131
          .0                  22
      > 5. 0                   4

  VALID WINDS:  DIRECTION DIFFERENCES  (DEG)
   Direction difference   Number of minutes
       0                      3362
  <=  10                       291
  <=  20                        85
  <=  30                        37
  <=  40                        17
  <=  50                         6
  <=  60                         4
  <=  70                         2
  <=  80                         1
  <=  90                         2
  <= 100                         0
  <= 110                         1
  <= 120                         1
  <= 130                         0
  <= 140                         1
  <= 150                         1
  <= 160                         0
  <= 170                         0
  <= 180                         0
   > 180                         0

  ########################################################################
Figure 17.  Quality control summaries listed in AERMINUTE.LOG.
                                                33

-------
After file processing and hourly averaging, AERMINUTE writes a summary of the winds to the
screen and log (Figure 18). AERMINUTE lists the minimum and maximum 2-minute wind
speeds processed along with their directions and date/times.  Beginning with version 15272, the
source of the minimum and maximum winds, 1-minute or 5-minute is also listed. The dates and
times listed are the actual reported time for the observations.  AERMINUTE also lists the
minimum and maximum hourly averaged winds with their directions and date/times.  After the
summaries, AERMINUTE lists the number of hours in the data period. This is the number of
calendar hours, not just hours processed by AERMINUTE. In this example, since an entire year
is processed, there are 8,760 hours in the data period. AERMINUTE then lists the number of
processed hours, valid hours, invalid hours, and calm hours along with percentages of the data
period.  Valid hours are those hours that met the observation criteria in Section 4.3 and 50% or
more of the observations were non-calm. Calm hours are hours that met the observation criteria
in Section 4.3 but had more than 50% calm observations. Invalid hours are those hours that did
not meet the observation criteria in Section 4.3.  AERMINUTE also lists the number of valid,
invalid, calm, missing, and total hours by month, where total hours it the number of hours in the
month, including hours not processed. If 5-minute data is processed, the number of substituted
minutes per month is also listed.  Finally, AERMINUTE lists the stop time of the program and if
the program terminated normally.
                                          34

-------
################################ SUMMARY ###############################
Minimum 2-minute wind speed (knots), direction and original date (YYYYMMDDHHmm)
0.00 253 200501010312 *l-minute data
Maximum 2-minute wind speed (knots), direction and original date (YYYYMMDDHHmm)
47.00 39 200510050010
Minimum hourly wind speed
0.77 170.0 2005012020
Maximum hourly wind speed
12.04 353.0 2005030810
Number of total hours in
Number of processed hours
Number of valid hours:
*l-minute data
(m/s) , direction and


(m/s) , direction and

data period:
:

Number of processed non-valid hours:
Number of calm hours:
TOTAL
YEAR MONTH HOURS
2005 January 744
2005 February 672
2005 March 744
2005 April 720
2005 May 744
2005 June 720
2005 July 744
2005 August 744
2005 September 720
2005 October 744
2005 November 720
2005 December 744


8760
7959 (
7034 (
393 (
532 (
VALID INVALID
HOURS
678
611
624
509
610
588
569
478
426
644
665
632
HOURS
4
29
19
21
19
29
37
73
132
7
7
16
date

date


90.86
80.30
4.49
6.07
CALM
HOURS
24
29
27
31
50
54
82
98
42
32
22
41
(YYYYMMDDHH)

(YYYYMMDDHH)


%)
%)
%)
%)
MISSING
HOURS
38
3
74
159
65
49
56
95
120
61
26
55









5-MIN
MINUTES
10
92
19
0
4
1
36
1035
741
67
6
1
########################################################################
Normal termination
Program end date & time:

September 30

, 2015 11



:49:51 AM
Figure 18. Summary section ofaerminute.log
                                        35

-------
6.  References
EPA, 2000: Meteorological Monitoring Guidance for Regulatory Modeling Applications. EPA-
      454/R-99-005. U.S. Environmental Protection Agency, Research Triangle Park, NC
      27711.

EPA, 2010a: Addendum - User's Guide for the AMS/EPA Regulatory Model - AERMOD. EPA-
      454/B-03-001. U.S. Environmental Protection Agency, Research Triangle Park, NC
      27711.

EPA, 201 Ob: Addendum - User's Guide for the AERMOD Meteorological Preprocessor
      (AERMET). EPA-454/B-03-002. U.S. Environmental Protection Agency, Research
      Triangle Park, NC 27711.
                                         36

-------
Appendix A: Record Quality Control Check Methodology

This appendix details the quality control checks made on 1-minute data records and 5-minute
data records.  Below are the quality control flag descriptions as well as example good_record.dat,
bad_record.dat, and check_record.dat files.  The following quality control checks are made on
each record of the 1-minute files.  The checks are made in the order shown in Table A-l. Flag
values of 0 are pass, values of 1 are fail.
                                          A-l

-------
Table A-l. Quality control checks on 1-minute winds read by AERMINUTE.
Flag
1
2
3
4
5
5
6
7
8
9
10
Check
Check columns 68 through 90 for non-numeric characters. Columns 67 through 90 should only
contain numbers or spaces.
Check columns 66 through 90 for character strings that have a leading space followed by a zero and
then a non-zero number (" 01", " 02", etc.)
Check columns 30 through 1 1 3 for a 4-character string, consisting of numbers representing a possible
time, i.e. 11:11 AM would be ' 1 1 1 1 ' or 10:59 PM would be ' 2259'. These strings should not be
in the record after column 29.
Check column 30 for non-blank character. Column 30 should be blank.
Check column 67 for any non-blank character. There should not be non-blank character in column 67.
Check columns 70-74 for the 2-minute average wind direction.
Check columns 76-797 for the 2-minute average wind speed.
Check columns 82-84 for the five second gust wind direction.
Check columns 87-89 for the 2-minute average wind speed.
Check column 90 for blank character
If flags one through nine are all zero, check for the number of fields. If the number of fields is 4, read
the 2-minute average wind direction, 2-minute average wind speed, five second gust direction, and five
second gust speed from columns 68 through 90. If directions or speeds do not meet range check set
flag 10 to 1 . Also set the 1 1th flag equal to 9, regardless of direction and speed check just noted. If the
number of fields is not 4 set the 1 0th flag to 1 and the 1 1 * flag to the number of fields.
Flag value
0
No non-numeric characters in the
column range
No text strings of leading zero in
column range.
No strings found
Column 30 is blank
Column 67 is blank
Any column contains a numeric
character and no non-numeric
characters
Any column contains a numeric
character and no non-numeric
characters
Any column contains a numeric
character and no non-numeric
characters
Any column contains a numeric
character and no non-numeric
characters
Column 90 is blank
If flags 1 through 9 are zero and
wind data meets range criteria
OR
One of the flags 1 through 9 is
non-zero. Check for flag 10 is
not performed so flag is left at
zero.
1
At least one non-
numeric character in
the column range.
Text string with
leading zero present in
column range.
A time string found in
columns 38 through
90
Column 30 is not
blank
Column 67 is non-
blank
Columns 70-74 are
blank or non-numeric
Columns 76-79 are
blank or non-numeric
Columns 82 and 84
are blank or non-
numeric
Columns 87-89 are
blank or non-numeric
Column 90 is non-
blank
Wind data does not
meet range criteria.
                                                     A-2

-------
If flags 1 through 9 are zero and flag 10 is zero, flag 11 is set to 9. AERMINUTE will check for
the number of fields and if the number of fields is not equal to 4 then flag 10 is set to 1 and flag
12 is set equal to the number of fields.  If at least one of the flags  is equal to one and flags 2 and
3 flags are zero, the record may be usable but does not fit the strict quality control criteria.
AERMINUTE reads columns 68 through 90 and checks for four or five numeric fields. If four
or five numeric fields  are found, AERMINUTE performs the same checks as done for flag 10;
positive wind directions less than or equal to 360 degrees and positive wind speeds less than 50
knots. If these conditions are not met, set flag 11 equal to eight.  Otherwise if at least one of the
conditions is met, set flag 11 equal to the number of numeric fields read from the line. If four or
five fields are not found,  set the thirteenth flag equal to the number of fields read from the  line.

Once all 11 flags have been set, get the maximum value among flags 1 through 10.  If the
maximum value is zero, the record is considered good and will be further processed. Also write
the record to good_records.dat.  If the maximum value for the first ten flags is not zero and the
eleventh flag is equal to four or five, write the line to check_records.dat. If the maximum value
among the first ten flags is not zero and the eleventh flag is not equal to four or five, write  the
record to bad_records.dat. Do not use the record if it is written to bad_records.dat or
check_records. dat

In Figure A-l,  are example records from good_records.dat which contains records that meet the
strict quality control checks above.  Records in this file have zeros for the first ten flags and a
value of nine for the eleventh flag.  The flags are not displayed for these records.  The text string
"123456 1234  123 1234" is used as reference  to denote where the wind variables should
generally be:

 123456  2-minute average wind direction
 1234     2-minute average wind speed (whole knots)
 123      5-second maximum wind gust's direction
 1234     5-second maximum wind gust's speed (whole knots)

In Figure A-l,  the actual  column numbers in the data file for each of the above text  strings are
listed above each string, i.e., "123456" corresponds to columns 68 through 73.  Also shown in
Figure A-l, is the location of column 39.  The above checks are met (in order as listed above):

   •  No non-numeric characters in columns 67 through90
   •  No leading zero numbers in columns 66 through 90
   •  No possible time strings outside of the station/date information block
   •  Column 30 is blank
   •  A number is present in at least one column of columns 70-74
   •  A number is present in at least one column of columns 76-78
   •  A number is present in at least one column of columns 82-84
   •  A number is present in at least one column of columns 87-89
   •  Column 90 is blank
   •  All above conditions are met, read the wind data and winds meet direction and speed
      criteria
                                         A-3

-------
                            30
68-73  75-7881-8386-89
 13
Figure A-l. Example good_records.dat file.

In Figure A-2, are example records from check_records.dat.  In check_records.dat, the values for
the eleven flags are listed at the end of the record. The text strings are as described for Figure A-
1. For a record to be written to check_records.dat, flags 1, 2  and 3 must be zero, no non-numeric
characters in columns  68 through 90 (flag 1), no leading zero numbers (flag 2), and no 4-digit
time strings (flag 3). Also, four numeric fields should be present in columns 67 through 90 and
at least one of the wind data fields meet the wind direction and speed range criteria. Table A-2
describes the situations found for each data record and possible solutions.
                                           A-4

-------
                              30
68-73  75-78  81-8386-89
 13740KRIC RIC2005020916142114
 13740KRIC RIC2005020919160016
 13740KRIC RIC2005020922190319
 13740KRIC RIC2005021003200820
 13740KRIC RIC2005021015392039
 13740KRIC RIC2005021102450745
                                                                               168
                                                                               311
                                                                            18
Figure A-2. Example check_records.dat file.
                                                                A-5

-------
Table A-2. Descrii
Record
number*
1
2-6
7
ption of records in check records.dat file.
Non-zero flags
3, 8, and 9
O
9
Situation
4-character string in
columns 30-113; no
numbers in columns
87-89; number in
column 90
4-character string in
columns 30-113
number in column 90
Possible solution
Do not use record; 4-
character string appears
to be a time
Eliminate characters
after column 92
Shift data from 90 to
113 left one column and
eliminate columns
beginning with "34"
*actual line number in file is record number plus one.

Once any records have been changed, the user can rename good_records.dat and
check_records.dat, enter the new filenames in inputfiles.txt in place of the original data, and
AERMINUTE can be rerun with the original good records and updated records from
check_records.dat.

Example records from bad_records.dat are shown in Figure A-3.  As with the previous
examples,  certain column numbers are denoted. In the first record, the record fails the quality
control check because there are non-numeric characters in columns 68 through 90, and no
numeric characters in columns 70-74, 76-79, 82-84,  and 87-89.  Other records shown in Figure
A-3 fail the quality control  checks because flag 1 is triggered, non-numeric characters in
columns 67-90 and no numeric characters in columns 70-74 or 76-79. These are missing wind
fields as denoted by the letter "M."
                                         A-6

-------
                           30
68-73  75-78  81-8386-89
                                                             123456  1234
                                                               M    M
                                                               M    M
                                                               M    M
Figure A-3. Example bad_records.dat file
                                                           A-7

-------
Record checking of 5-minute data is more straightforward than record checking of 1-minute data
as the 5-minute data files are in a more consistent format than the 1-minute files. When
processing the 5-minute files, AERMINUTE performs the following checks:
   •   The record is checked for the presence of the text string "5-MIN" and if not present the
       record is no longer processed
   •   The record is checked for the presence of the text string "AUTO" which sets the columns
       in which to search for the wind data. If "AUTO" is not present, then the wind data are
       determined in columns  67 through 73 of the record. If "AUTO" is present, then the wind
       data are determined in columns 72 through 78.
   •   In the text string containing the wind data, the string "KT" for knots is searched.  If this is
       not found, this is not necessarily a bad record, because  the letter "G" for gust may be in
       the string. If "KT" is not found and "G" is not subsequently found, the record is no
       longer processed.
   •   If "KT" or "G" are found in the wind data columns, the first five columns of the wind
       data columns are searched for non-numeric characters.  If non-numeric characters are
       found, then the record is no longer processed.
   •   If the first five columns of the wind data columns are numeric, the first two columns are
       read in as the wind direction  as tens of degrees and the  remaining three columns are read
       in as the wind speed in  knots. The wind direction is checked to make sure it is between 0
       and 36 (for 360) and the wind speed is between 0 and 50 knots. If these checks are
       passed the winds are considered valid.
                                         A-8

-------
Appendix B.  ASOS stations missing 1-minute data files for June-December 2013
Tables B-l through B-10 list the stations, by EPA region, missing 1-minute data for June-
December 2013. Figures B-l and B-2 show the locations of the stations in the continental U.S.
and Alaska, respectively.

Table B-l.  Region 1 ASOS stations.
Station
KIJD
KAQW
KCQX
KFIT
KORE
KPSF
KPYM
KTAN
KCAR
KFVE
KHUL
KMLT
KAFN
KCON
KUUU
KWST
KDDH
KMPV
KMVL
KVSF
Station Name
WILLIMANTIC WINDHAM AP
NORTH ADAMS HARRIMAN AP
CHATHAM MUNI AP
FITCHBURG MUNI AP
ORANGE MUNI AP
PITTSFIELD MUNI AP
PLYMOUTH MUNI AP
TAUNTON MUNI AP
CARIBOU WFO
FRENCHVILLE AROOSTOOK AP
HOULTON AP
MILLINOCKET MUNI AP
JAFFREY MUNI AP
CONCORD ASOS
NEWPORT STATE AP
WESTERLY STATE AP
BENNINGTON MORSE ST AP
MONTPELIER AP
MORRISVILLE STOWE STATE AP
SPRINGFIELD HARTNESS AP
State
CT
MA
MA
MA
MA
MA
MA
MA
ME
ME
ME
ME
NH
NH
RI
RI
VT
VT
VT
VT
                                         B-l

-------
Table B-2. Region 2 ASPS stations.
Station
K12N
KART
KDKK
KDSV
KELZ
KFZY
KGFL
KMSS
KMTP
KNYC
KPBG
KPEO
KRME
KSLK
Station Name
ANDOVER AEROFLEX AP
WATERTOWN AP
DUNKIRK CHAUTAUQUA AP
DANSVILLE AP
WELLS VILLE MUNI AP
FULTON OSWEGO CO AP
GLENS FALLS AP
MAS SENA AP
MONT AUK AP
NEW YORK CNTRL PRK WSF
PLATTSBURGH AFB
PENN YAN AP
GRIFFISS AFB
SARANAC RGNL AP
State
NJ
NY
NY
NY
NY
NY
NY
NY
NY
NY
NY
NY
NY
NY
Table B-3. Region 3 ASOS stations.
Station
KOXB
KAOO
KBFD
KFIG
KGKJ
KAKQ
KOFP
KBKW
KEKN
Station Name
OCEAN CITY MUNI AP
ALTOONA BLAIR CO AP
BRADFORD FAA AP
CLEARFIELD LAWRENCE AP
PORT MEAD VILLE AP
NORFOLK RICH
ASHLAND HANOVER CO MUNI
AP
BECKLEY RALEIGH CO AP
ELKINS RANDOLPH COUNTY AP
State
MD
PA
PA
PA
PA
VA
VA
wv
wv
                                      B-2

-------
Table B-4. Region 4 ASPS stations.
Station
KANB
KDCU
KEET
KMSL
KTOI
K40J
KAAF
KCTY
KMTH
KAMG
KDNL
KFFC
KGVL
KRMG
KSSI
KVPC
KJKL
KGWO
KECG
KHSE
KCUB
KOGB
Station Name
ANNISTON ARPT ASOS
DEC ATUR PRYOR FLD
ALABASTER 5 SSE
MUSCLE SHOALS AP
TROYAF
PERRY FOLEY AP
APALACHICOLA AP
CROSS CITY AP
MARATHON AP
ALMA BACON CO AP
AUGUSTA DANIEL FLD
ATLANTA
GAINESVILLE GILMER AP
ROME R B RUSSELL AP
BRUNSWICK CAA AP
CARTERSVILLE AP
JACKSON
GREENWOOD FAA AP
ELIZABETH CITY CG STN
CAPE HATTERAS AP
COLUMBIA OWENS DWTN AP
ORANGEBURG MUNI AP
State
AL
AL
AL
AL
AL
FL
FL
FL
FL
GA
GA
GA
GA
GA
GA
GA
KY
MS
NC
NC
sc
sc
                                      B-3

-------
Table B-5. Region 5 ASOS stations.
Station
KADG
KANJ
KAPN
KGLR
KHTL
KPLN
KBDE
KBRD
KHIB
KINL
KPKD
KAKR
KBJJ
KFDY
KHZY
KILN
KLPR
KMNN
KTDZ
KASX
KAUW
KHYR
KISW
KOVS
Station Name
ADRIAN LENAWEE CO AP
SAULT STE MARIE SNDRSN
ALPENA AP
GAYLORD OTSEGO CO AP
HOUGHTON LAKE WSO AP
PELLSTON AP
BAUDETTE INTL AP
BRAINERD CROW WING CO AP
HIBBING CHISHOLM HIBBING A
INTERNATIONAL FALLS AP
PARK RAPIDS 2 S
AKRON FULTON INTL AP
WOOSTER WAYNE CO AP
FINDLAY AP
ASHTABULA CO AP
CINCINNATI
ELYRIA LORAIN CO AP
MARION MUNI AP
TOLEDO METCALF FLD
ASHLAND KENNEDY MEM AP
WAUSAU ASOS
HAYWARD MUNI AP
WISCONSIN RAPIDS
ALEXANDER
BOSCOBEL AP
State
MI
MI
MI
MI
MI
MI
MN
MN
MN
MN
MN
OH
OH
OH
OH
OH
OH
OH
OH
WI
WI
WI
WI
WI
                                      B-4

-------
Table B-6. Region 6 ASOS stations.
Station
KESF
KTVR
KCAO
KDMN
KGUP
KLVS
KRTN
KTCC
KTCS
KGUY
K6R6
KALI
KBAZ
KBGD
KBMQ
KCOT
KCRS
KCXO
KDHT
KDRT
KHDO
KJCT
KLBX
KLVJ
KMWL
KPIL
KPSX
KRKP
KTRL
KUTS
KVCT
Station Name
ALEXANDRIA ESLER FLD
TALLULAH VICKSBURG AP
CLAYTON MUNI ARPK AP
DEMING F AA AP
GALLUP FAA AP
LAS VEGAS FAA AP
RATON MUNI CREWS AP
TUCUMCARI FAA AP
TRUTH OR CONSEQUENCE AP
GUYMON MUNI AP
DRYDEN TERRELL CO AP
ALICE CAA AP
NEW BRAUNFELS AP
BORGER HUTCHINSON CO AP
BURNETAP
COTULLA
CORSICANA CAMPBELL FLD
CONROE MONTGOMERY CO AP
DALHART FAA AP
DEL RIO AP
HONDO AP
JUNCTION
ANGLETON BRAZORIA AP
HOUSTON CLOVER FLD
MINERAL WELLS AP
PORT ISABEL CAMERON AP
P ALACK) SFAAAP
ROCKPORT ASOS
TERRELL MUNI AP
HUNTSVILLE MUNI AP
VICTORIA ASOS
State
LA
LA
NM
NM
NM
NM
NM
NM
NM
OK
TX
TX
TX
TX
TX
TX
TX
TX
TX
TX
TX
TX
TX
TX
TX
TX
TX
TX
TX
TX
TX
                                      B-5

-------
Table B-7. Region 7 ASPS stations.
Station
KAMW
KBRL
KDVN
KEST
KIOW
KLWD
KMCW
KMIW
KOTM
KSPW
KCNK
KDDC
KGLD
KHLC
KDMO
KIRK
KLXT
KPOF
KAIA
KBFF
KCDR
KHSI
KLBF
KMCK
KODX
KOFK
KSNY
KVTN
Station Name
AMES MUNI AP
BURLINGTON AP
DAVENPORT
ESTHERVILLE MUNI AP
IOWA CITY CAA AP
LAMONI MUNI AP
MASON CITY AP
MARSHALLTOWN MUNI AP
OTTUMWA AP
SPENCER MUNI AP
CONCORDIA ASOS
DODGE CITY
GOODLAND
HILL CITY 1 NE
SEDALIA MEM AP
KIRKSVILLE RGNL AP
LEES SUMMIT MUNI AP
POPLAR BLUFF MUNI AP
ALLIANCE MUNI AP
SCOTTSBLUFF AP
CHADRON F AA AP
HASTINGS MUNI AP
NORTH PLATTE RGNL AP
MCCOOK MUNI AP
EVELYN SHARP FIELD
NORFOLK
SIDNEY 3 S
VALENTINE MILLER AP
State
IA
IA
IA
IA
IA
IA
IA
IA
IA
IA
KS
KS
KS
KS
MO
MO
MO
MO
NE
NE
NE
NE
NE
NE
NE
NE
NE
NE
                                      B-6

-------
Table B-8. Region 8 ASOS stations.
Station
KAKO
KALS
KCAG
KCEZ
KDRO
KEEO
KITR
KLIC
KLXV
KMTJ
KBHK
KBTM
KGGW
KHVR
KJDN
KLVM
KMLS
KOLF
KDIK
KHEI
KISN
KJMS
K8D3
K9V9
KABR
KATY
KCUT
KD07
KHON
KMBG
KMHE
KPHP
KPIR
KCNY
KMLF
KVEL
KDGW
KGCC
KLAR
Station Name
AKRON 1 N
ALAMOSA BERGMAN FLD
CRAIG ASOS
CORTEZ ASOS
DURANGO ASOS
MEEKER AP
BURLINGTON CARSON AP
LIMON WSMO
LEADVILLE 2 SW
MONTROSE ASOS
BAKER MUNI AP
BUTTE BERT MOONEY AP
GLASGOW
HAVRE AP ASOS
JORDAN AP
LIVINGSTON AP
MILES CITY AP
WOLF POINT INTL AP
DICKINSON FAA AP
HETTINGER MUNI AP
WILLISTON SLOULIN FLD
JAMESTOWN FAA AP
SISSETON MUNI AP
CHAMBERLAIN MUNI AP
ABERDEEN
WATERTOWN FAA AP
CUSTER CO AP
FAITH MUNI AP
HURON AP
MOBRIDGE MUNI AP
MITCHELL AP
PHILIP 2 N
PIERRE FAA AP
CANYONLANDS ASOS
MILFORD MUNI AP
VERNAL AP
CONVERSE CO AP ASOS
GILLETTE CAMPBELL AP
LARAMIEAP
State
CO
CO
CO
CO
CO
CO
CO
CO
CO
CO
MT
MT
MT
MT
MT
MT
MT
MT
ND
ND
ND
ND
SD
SD
SD
SD
SD
SD
SD
SD
SD
SD
SD
UT
UT
UT
WY
WY
WY
                                      B-7

-------
Table B-8. Continued.
Station
KLND
KP60
KRIW
KRWL
KSHR
KTOR
Station Name
LANDER AP
YELLOWSTONE LAKE
RIVERTON
RAWLINS AP
SHERIDAN AP
TORRINGTON MUNI AP
State
WY
WY
WY
WY
WY
WY
Table B-9. Region 9 ASPS stations.
Station
KIGM
KINW
KPGA
KRQE
KSAD
KSJN
KAAT
KACV
KAVX
KBffl
KBLU
KCEC
KHJO
KMAE
KMCE
KPRB
KRBL
KSIY
KUKI
KWVI
KELY
KWMC
Station Name
KINGMAN AP
WINSLOW AP
PAGE MUNI AP
WINDOW ROCK AP
SAFFORD MUNI AP
ST JOHNS INDUSTRIAL AP
ALTURAS MUNI AP
ARC ATA AP
AVALON CATALINA AP
BISHOP AP
BLUE CANYON
CRESCENT CITY CAA AP
HANFORD MUNI AP
MADERA MUNI AP
MERCED MUNI AP
PASO ROBLES CAA AP
RED BLUFF
MONTAGUE
UKIAH FAA AP
WATSONVILLE MUNI AP
ELY AIRPORT
WINNEMUCCA AP
State
AZ
AZ
AZ
AZ
AZ
AZ
CA
CA
CA
CA
CA
CA
CA
CA
CA
CA
CA
CA
CA
CA
NV
NV
                                       B-8

-------
Table B-10. Region 10 ASPS stations.
Station
PABR
PACD
PACV
FADE
PAGK
PAMC
PANN
PANT
PAPB
PAQT
PASN
PASO
PATO
PAVL
PAWD
PAYA
KBYI
KJER
KLLJ
KMLP
KMYL
KP69
KRXE
KAST
KBKE
KBNO
KHRI
KONO
KRBG
KREO
KDEW
KEAT
KELN
KEPH
KOMK
KPUW
KSHN
KUIL
Station Name
BARROW WSO AP
COLD BAY AP
CORDOVA AP
DEERING AP
GULKANA AP
MCGRATH AP
NENANA MUNI AP
ANNETTE WSO AP
ST GEORGE ISLAND AP
NUIQSUT AP
ST PAUL ISLAND AP
SELDOVIA AP
PORTAGE GLACIER V C
KIVALINA AP
SEWARD
YAKUT AT AP
BURLEY FAA AP
JEROME CO AP
CHALLIS AP
MULL AN PASS VOR/DME
MCCALL AP
LOWELL THREE RIVERS
REXBURG MADISON CO AP
ASTORIA AP PORT OF
BAKER CAA AP
BURNS MUNI AP
HERMISTON MUNI AP
ONTARIO
ROSEBURG RGNL AP
ROME ST AP
DEER PARK
WENATCHEE AP
ELLENSBURG BOWERS FLD
EPHRATA AP
OMAK
PULLMAN MOSCOW RGNL AP
SHELTON AP
QUILLAYUTE AP
State
AK
AK
AK
AK
AK
AK
AK
AK
AK
AK
AK
AK
AK
AK
AK
AK
ID
ID
ID
ID
ID
ID
ID
OR
OR
OR
OR
OR
OR
OR
WA
WA
WA
WA
WA
WA
WA
WA
                                      B-9

-------
                                                                                                                      KFVE
                                                                                                                        KHUL
    *   KSIY
 PACVKACV*
                                            ^KDGW KCDR  KVTN
                                                      KLBF»

                                                KAKO  KMCK«

                                               KLIC KITR   KHLC
                                                                                                 KCUB
                                                                                             C   KDtfl K
                                                                                                 KAMGKSS|
                                                                                                 •  »
                                                         ,T        KUTS
                                                         •'•   KCX<»
                                                          KBMQ    »

                                                    KDRT KHDKD      KLVJ
                                                   *    *     KV
                                                         KCOT  •»'
                                                        •     KRKP
                                                           KAL»



                                                            ^KPIL
                    K«J
                v

-"">*
Figure B-l.  Locations of ASOS stations in conterminous U.S. with missing June-December 2013 1-minute data files.
                                                              B-10

-------



                          PASN
                          •

                          PAPB

                               PACD

                              *
Figure B-2. Locations of ASOS stations in Alaska with missing June-December 2013 1-
minute data files.
                                        B-ll

-------

-------
United States                         Office of Air Quality Planning and Standards         Publication No. EPA-454/B-15-006
Environmental Protection                    Air Quality Assessment Division                                 October, 2015
Agency                                      Research Triangle Park, NC

-------