/ O \
\ '
PRO"^
AERMINUTE User's Guide
-------
-------
EPA-454/B-23-007
October 2023
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 II WGROLP 8
4.1.3 DATAFILE 9
4.1.3 DAT5FILE 10
4.1.5 SLRI DATA 11
4.1.6. 01 TITLES 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 (1101 RIII.H) 19
5.2 Record check files 20
5.3 Summary file (SIMMI 11.11) 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
in
-------
6. References 36
Appendix A: Record Quality Control Check Methodology 1
Appendix B. ASOS stations missing 1-minute data files for June-December 2013 1
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 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 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 of aerminute.log 28
Figure 14. Data file check section of AERMINUTE.LOG 29
Figure 15. 1-minute file processing section of aerminute.log 31
Figure 16. 5-minute file processing section of aerminute.log 32
Figure 17. Quality control summaries listed in AERMINUTE.LOG 33
Figure 18. Summary section of aerminute.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. Example bad_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
v
-------
Tables
Table A-l. 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. Region 3 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, 2023a). 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, 2023b).
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.
1
-------
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 READLINE 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.
2
-------
6. Modified subroutine READONE to reset variable flagstr from size 14 to 12 and included
descriptions of modified flags.
7. Modified subroutine READLINE 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
15FILE.
4. Modified subroutine CHECKFILES to perform QA on 1-minute or optional 5-minute
data filenames.
5. Added subroutines READFIVE, READ5, 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 SUB5 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 Center for Environmental Information (NCEI) website at
https://www.ncei.noaa.gov/data/automated-surface-observing-svstem-one-minute-pgl/access/
and the 5-minute data can be obtained at https://www.ncei.noaa.gov/data/automated-surface-
observing-svstem-five-minute/access/.
The 1-minute ASOS winds are in the DSI-6405 format and the 5-minute winds are in the DSI-
6401 format. 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. For files downloaded prior to 2023 (regardless of the
3
-------
year of the data), the files are generally named 640Z0XXXXYYYYMM.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. For files downloaded beginning in 2023 (regardless of
year) the 1-minute files are generally named asos-lmin-pgl-XXXX-YYYYMM.dat and 5-
minute files are generally named asos-5min-XXXX-YYYYMM.dat where XXXX is the 4-
character station call sign, and YYYY and MM are the 4-digit year and 2-digit month. 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 https://www.ncei.noaa.gov/data/automated-
surface-observing-svstem-one-minute-pgl/doc/asos-lmin-pgl documentation.pdf and the
format for the 5-minute files (post 1998) can be found at
https://www.ncei.noaa.gov/data/automated-surface-observing-svstem-five-minute/doc/asos-
5min documentation.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
13874KATL ATL2003010100010501 0.058 N 0.118 N 136 9
13874KATL ATL2003010100020502 0.058 N 0.118 N 141 9
13874KATL ATL2003010100030503 0.056 N 0.118 N 148 10
13874KATL ATL2003010100040504 0.054 N 0.119 N 154 11
13874KATL ATL2003010100050505 0.054 N 0.120 N 157 11
13874KATL ATL2003010100060506 0.052 N 0.117 N 160 11
13874KATL ATL2003010100070507 0.053 N 0.117 N 156 10
125 10 09R60+
131 11 09R60+
143 11 09R60+
164 13 09R60+
151 13 09R60+
163 13 09R60+
166 13 09R60+
154 12 09R60+
Variable
Columns
Station WBAN Number
1-5
4-letter station call sign (with leading K or P in most cases)
6-9
3-letter station call sign (without leading character)
11-13
4-digit year in local standard time (LST)
14-17
2-digit month in LST
18-19
2-digit day in LST
20-21
2-digit hour (00-23) in LST
22-23
2-digit minute (00-59) in LST
24-25
2-digit hour (00-23) in Universal Time Coordinate (UTC)
26-27
2-digit minute (00-59) in UTC
28-29
Visible extinction coefficient at first sensor (N=night, D=day, M=missing)
31-4P
Visible extinction coefficient at second sensor (N=night, D=day, M=missing)
Varies
2-minute average wind direction (deg)
67-74*
2-minute average wind speed (knots)
75-79*
Maximum 5-second wind speed direction (deg)
80-84*
Maximum 5-second wind speed (knots)
85-89*
Runway visual range (hundreds of feet)
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.
4
-------
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 '00000KT'
have been subjected to the METAR calms coding and winds starting with 'VRB' have been
subjected to the METAR variable wind coding.
5
-------
03032K6R6 6R620050303044010103/03/05 04:40:31 5-MIN K6R6 031040Z AUTO 00000KT 07/04 A2999 2260 82 1900 000/00 RMK A02 PWINO TSNO
03032K6R6 6R620050303044510103/03/05 04:45:31 5-MIN K6R6 031045Z AUTO 30003KT 07/04 A2999 2260 82 1900 300/03 RMK A02 PWINO TSNO
03032K6R6 6R620050303045011803/03/05 04:50:31 5-MIN K6R6 031050Z AUTO 29003KT 07/04 A2999 2260 82 1900 280/03 RMK A02 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 A02 PWINO TSNO
03032K6R6 6R620050303050010103/03/05 05:00:31 5-MIN K6R6 031100Z AUTO 29005KT 07/04 A3000 2250 86 1800 290/05 RMK A02 PWINO TSNO
03032K6R6 6R620050303050510103/03/05 05:05:31 5-MIN K6R6 031105Z AUTO 28006KT 07/04 A3000 2250 82 1800 270/06 RMK A02 PWINO TSNO
03032K6R6 6R620050303051010103/03/05 05:10:31 5-MIN K6R6 031110Z AUTO 29007KT 06/04 A3000 2250 86 1800 290/07 RMK A02 PWINO TSNO
03032K6R6 6R620050303111010103/03/05 11:10:31 5-MIN K6R6 031710Z AUTO VRB04KT 14/08 A3009 2160 64 2600 VRB/04 RMK A02 PWINO TSNO
03032K6R6 6R620050303180010803/03/05 18:00:31 5-MIN K6R6 040000Z AUTO 13012G19KT 19/07 A2995 2290 44 3400 130/12G19 RMK A02 PWINO TSNO
Variable
Columns
Station WBAN Number
1-5
4-letter station call sign (with leading K or P in most cases)
6-9
3-letter station call sign (without leading character)
11-13
4-digit year in local standard time (LST)
14-17
2-digit month in LST
18-19
2-digit day in LST
20-21
2-digit hour (00-23) in LST
22-23
2-digit minute at 5-minute interval (00-55) in LST
24-25
Record length starting at column 29
26-28
Date in LST (MM/DD/YY)
29-36
Tim in LST (HH:MM:SS)
38-45
Data type (always "5-min")
48-52
4-letter station call sign (with leading K in most cases)
54-57
Date and time in UTC (ddhhmmZ)
59-65
Observation type (only present when in auto mode =
67-70
'AUTO')
2-minute average wind direction in tens of degrees
67-68 (if'AUTO' not present), 72-73 (if'AUTO'
(degrees/10)
present)
2-minute average wind speed (knots)
69-71 (if'AUTO' not present), 74-76 (if'AUTO'
present)
Figure 2. General format of an ASOS 5-minute file.
6
-------
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 filenames
of the 1-minute data files and optional 5-minute files. The user is prompted for the name of the
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.
Command Prompt - ,,\aerminute_15272
© i
Program start date & tine: September 30, 2015 11:31:51 AM
tttttttttttttttttttttttttttttltttttttttttttttttttttttttttttttttt INPUTS tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt
Enter the name of the AERMINUTE control File.
If the filename or pathname contains spaces enclose in quotations
Figure 3. Initial prompt of name of AERMINUTE control file.
7
-------
STARTEND start month start year end month end year
IFWGROUP Status comm
month comm day comm year
DATAFILE STARTING
1-minute data file list
DATAFILE FINISHED
DAT5FILE STARTING
5-minute data file list
DAT5FILE FINISHED
(Optional)
SURFDATA STARTING
Surface files list
SURFDATA FINISHED
(Optional)
OUTFILES STARTING
HOURFILE name
SUMMFILE name
COMPFILE name
1 5 FILE name
SUB5FILE name
OUTFILES FINISHED
(Optional)
(Optional)
(Optional)
(Optional)
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, start year, end month, and
endjyear. 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.2 IFWGROUP
The keyword IFWGROUP 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:
https://www.weather.gov/media/asos/ASQS%20Implementation/IFW 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
8
-------
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 IFWGROUP 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. 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.3 DATAFILE
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.
9
-------
"example filHs\64050hATL200302 dat"
"example files\64050KATL200303 dat"
PI
"example fil
-------
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 when
processing NWS surface data. Currently, AERMINUTE is only configured to read Integrated
Surface Hourly Data (ISHD) in the DS-3505 full archival format. The purpose of reading these
data files is to compare the non-quality controlled 1-minute winds from the 1-minute data files
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 DATAFILE
section. The section starts with the keywords "SURFDATA STARTING" and ends with
"SURFDATA FINISHED." The standard observation files are listed between the lines as shown
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.
• 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.
11
-------
• 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, 15 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
15 FILE ric_15_comps.csv
SUB5FILE ric_sub_5.csv
OUTFILES FINISHED
Figure 6. Example AERMENUTE 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, 2023b).
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 = "Sin 0 (1)
vy - - cos 6 (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:
¦ 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
¦ 1.0 through 3.0 m/s
¦ 3.0 through 5.0 m/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).
1 N
s = - Es,
A f '
(3)
N^'
Where S is the hourly averaged wind speed, N is the number of valid observations or minutes for
the hour, and Si 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.
1 N
(4)
1 N
V* = N^ <5>
6 = Arc tan^^/^ j + CORR (6)
Where Vx and Vy are the hourly averaged x- and y-components of the wind respectively, 9 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
= 360 for Vx > 0 and Vy < 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
18
-------
• Good_records.dat
• 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 (15FILE)
• Optional file listing of minutes substituted with 5-minute data (SUB5FILE)
• AERMINUTE.log
5.1 Hourly winds fHOURFILE)
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 WBAN: 13740 Call sign: KRIC
IFW: N 5-MIN USED: Y
5 111
2.50 201.0
5 112
2.29 208.0
5 113
2.35 197.0
5 114
1.05 199.0
5 115
0.97 188.0
5 116
2.21 193.0
5 117
2.28 193.0
5 118
1.78 183.0
5 119
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 of good_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 of check_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.
20
-------
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
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 '00000KT' 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
21
-------
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
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
Date of observation (YYYYMMDD)
Hr
Hour of observation (01-24)
Flag
Flag denoting if hour is valid (V), calm (C), non-valid (NV), or missing (M)
IFW flag
Integer code corresponding to IFW status (0=not IFW during data period, l=part of IFW group
during data period)
Total minutes
Total number of minutes read from 1-minute files for hour
Total calms
Total number of calm minutes for hour
Total even
Total even minutes read from files for hour
Even calms
Total number of even minutes with calm winds for hour
Total odd
Total odd minutes read from files for hour
Total odd calm
Total number of odd minutes with calm winds for hour
Odd used
Total odd minutes used in hourly average winds for hour
Odd calms used
Total number of odd minutes with calm winds used in hour average winds for hour
Min speed
Minimum 2-minute wind speed (m/s) for the hour
Avg speed
Hourly averaged wind speed (m/s)
Max speed
Maximum 2-minute wind speed (m/s) for the hour
Min dir
Minimum 2-minute wind direction (m/s) for the hour
Avg dir
Hourly averaged wind direction
Max dir
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,176,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
Date of observation (YYYYMMDD)
Hr
Hour of observation (01-24)
Flag
Flag denoting if hour is valid (V), calm (C), non-valid (NV), or missing (M)
IFW flag
Integer code corresponding to IFW status (0=not IFW during data period, l=part of IFW group during data period)
Total minutes
Total number of minutes read from 1-minute files for hour
Total 5-min subs
Total number of minutes 5-minute data was substituted into 1-minute data
Total calms
Total number of calm minutes for hour
Total even
Total even minutes read from files for hour
Total even 5-min subs
Total number of even minutes substituted with 5-minute data
Even calms
Total number of even minutes with calm winds for hour
Total odd
Total odd minutes read from files for hour
Total odd 5-min subs
Total number of odd minutes substituted with 5-minute data
Total odd calm
Total number of odd minutes with calm winds for hour
Odd used
Total odd minutes used in hourly average winds for hour
Odd calms used
Total number of odd minutes with calm winds used in hour average winds for hour
Min speed
Minimum 2-minute wind speed (m/s) for the hour
Min speed source
Source of minimum wind speed (l=l-minute data, 5=5-minute data)
Avg speed
Hourly averaged wind speed (m/s)
Max speed
Maximum 2-minute wind speed (m/s) for the hour
Max speed source
Source of maximum wind speed (l=l-minute data, 5=5-minute data)
Min dir
Minimum 2-minute wind direction (m/s) for the hour
Min dir source
Source of minimum wind direction (l=l-minute data, 5=5-minute data)
Avg dir
Hourly averaged wind direction
Max dir
Maximum 2-minute wind direction (m/s) for the hour
Max dir source
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,calmflag,l-mindir,l-mindirlO,l-min speed, 1-min speed l,obs. dir,obs. speed,dirdiff,speeddiff,windflag,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)
Date of observation with 4-digit year, month, and day
Hour
Hour of observation (1-24)
Minute
Minute of observation
Calm flag
Integer flag denoting if 1-minute observation is considered calm (0=non-calm,l=calm)
1-min dir
1-minute direction from 1-minute data files
1-min dir 10
1-minute direction from 1-minute data files rounded to nearest ten degrees
1-min speed
1-minute wind speed (m/s)
1-min speed 1
1-minute wind speed rounded to nearest tenth of a m/s
Obs. dir
Wind direction from standard observations
Obs. speed
Wind speed (m/s) from standard observation
dirdiff
Difference between 1-minute wind direction and standard observation direction, i.e. 1-min dirlO - obs. dir
speeddiff
Difference between 1-minute wind speed and standard observation speed, i.e. 1-min speed 1- obs. speed
Wind flag
Wind observation type code from standard observation
C=calm
N=normal
R=60 minute average speed
Q=squall
V=variable
9=missing
QC flag
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, 15FILE 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)
Date of observation with 4-digit year, month, and day
Hour
Hour of observation (1-24)
Minute
Minute of observation
1-mindir
1-minute dataset wind direction
1-min speed
1-minute dataset wind speed (m/s)
5-min 10 deg.
5-minute dataset wind direction to nearest 10°. 'VRB'
indicates variable wind direction
5-min dir
5-minute dataset randomized wind direction. 'VRB'
indicates variable wind direction
5-min speed
5-minute dataset wind speed (m/s)
Figure 11. Format of 15 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)
Date of observation with 4-digit year, month, and day
Hour
Hour of observation (1-24)
Minute
Minute of observation
5-min dir
5-minute dataset randomized wind direction.
5-min speed
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 of AERMINUTE.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 64050KRIC2005 01.dat
Reading 64050KRIC2005 02.dat
Reading 64050KRIC2005 03.dat
Reading 64050KRIC2005 04.dat
Reading 64050KRIC2005 05.dat
Reading 64050KRIC2005 06.dat
Reading 64050KRIC2005 07.dat
Reading 64050KRIC2005 08.dat
Reading 64050KRIC2005 09.dat
Reading 64050KRIC200510.dat
Reading 64050KRIC200511.dat
Reading 64050KRIC200512.dat
All files read...
RECORD FORMAT QA
Total number of records read from files:
Number of processed records:
Number of records outside data period:
Number of records inside data period:
Number of non-processed records:
Number of records for minute 1:
Number of bad records:
Number of check records:
Number of bad minute records:
458902
450677
1
450676
8225
7646
437
142
0
NOTE: Number of non-processed records includes records outside data period
QA FLAG SUMMARY COUNT
FLAG DESCRIPTION
1 Non-numeric characters in columns 68 through 90
2 Text string with leading zero in columns 66 through 90
3 4-character numeric string found in columns 30 through 113
4 Column 30 is non-blank
5 No number in columns 70-74 for 2-minute wind direction
6 No number in columns 76-79 for 2-minute wind speed
7 No number in columns 82-84 for 5-second gust wind direction
8 No number in columns 87-89 for 5-second gust wind speed
9 Number in column 90
10 Wind speeds and directions outside allowable ranges
11 Other flags switched on, but winds may be okay
11 Other flags switched on, but record is bad
########################################################################
RECORDS
246
93
164
67
283
296
284
291
196
4
142
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
12
3 . 0
-5.0
0
>5.0
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
.3 - 0.5
198
0
.5 - 1.0
134
1
.0 - 3.0
131
3
.0 - 5.0
22
>5.0
4
VALID WINDS
: DIRECTION
DIFFERENCES
Direction
difference
Number of mi:
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
(DEG)
########################################################################
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
*1-minute
data
Maximum 2-minute wind speed (knots)
, direction
and original date
(YYYYMMDDHHmm)
47.00
39 200510050010
*1-minute
data
Minimum hourly wind speed
(m/s), direction and
date (YYYYMMDDHH)
0.77
170.0 2005012020
Maximum hourly wind speed
(m/s), direction and
date (YYYYMMDDHH)
12.04
353.0 2005030810
Number
of total hours in data period: 8760
Number
of processed hours:
7959 (
90.86%
Number
of valid hours:
7034 (
80.30%
Number
of processed non-valid hours
: 393 (
4.49%
Number
of calm hours:
532 (
6.07%
TOTAL
VALID
INVALID
CALM
MISSING
5-MIN
YEAR
MONTH HOURS
HOURS
HOURS
HOURS
HOURS
MINUTES
2005
January 74 4
678
4
24
38
10
2005
February 672
611
29
29
3
92
2005
March 74 4
624
19
27
74
19
2005
April 72 0
509
21
31
159
0
2005
May 744
610
19
50
65
4
2005
June 72 0
588
29
54
49
1
2005
July 74 4
569
37
82
56
36
2005
August 74 4
478
73
98
95
1035
2005 September 720
426
132
42
120
741
2005
October 744
644
7
32
61
67
2005
November 72 0
665
7
22
26
6
2005
December 744
632
16
41
55
1
########################################################################
Normal
termination
Program end date & time: September
30, 2015 11
: 4 9:51
AM
Figure 18. Summary section of aerminute.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, 2023a: User's Guide for the AMS/EPA Regulatory Model - AERMOD. EPA-454/B-23-
008. U.S. Environmental Protection Agency, Research Triangle Park, NC 27711.
EPA, 2023b: User's Guide for the AERMOD Meteorological Preprocessor (AERMET). EPA-
454/B-23-005. 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
Check
Flag value
0
1
1
Check columns 68 through 90 for non-numeric characters. Columns 67 through 90 should only
contain numbers or spaces.
No non-numeric characters in the
column range
At least one non-
numeric character in
the column range.
2
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.)
No text strings of leading zero in
column range.
Text string with
leading zero present in
column range.
3
Check columns 30 through 113 for a 4-character string, consisting of numbers representing a possible
time, i.e. 11:11 AM would be ' 1111' or 10:59 PM would be ' 2259'. These strings should not be
in the record after column 29.
No strings found
A time string found in
columns 38 through
90
4
Check column 30 for non-blank character. Column 30 should be blank.
Column 30 is blank
Column 30 is not
blank
5
Check column 67 for any non-blank character. There should not be non-blank character in column 67.
Column 67 is blank
Column 67 is non-
blank
5
Check columns 70-74 for the 2-minute average wind direction.
Any column contains a numeric
character and no non-numeric
characters
Columns 70-74 are
blank or non-numeric
6
Check columns 76-797 for the 2-minute average wind speed.
Any column contains a numeric
character and no non-numeric
characters
Columns 76-79 are
blank or non-numeric
7
Check columns 82-84 for the five second gust wind direction.
Any column contains a numeric
character and no non-numeric
characters
Columns 82 and 84
are blank or non-
numeric
8
Check columns 87-89 for the 2-minute average wind speed.
Any column contains a numeric
character and no non-numeric
characters
Columns 87-89 are
blank or non-numeric
9
Check column 90 for blank character
Column 90 is blank
Column 90 is non-
blank
10
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 11th flag equal to 9, regardless of direction and speed check just noted. If the
number of fields is not 4 set the 10th flag to 1 and the 11th flag to the number of fields.
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.
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
checkrecords. 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-78 81-83 86-89
123456 1234 123 1234
137 4 OKRIC RIC2005010100000500 0.150 N
137 4 OKRIC RIC2005010100020502 0.152 N
137 4 OKRIC RIC2005010100030503 0.153 N
137 4 OKRIC RIC2005010100040504 0.152 N
137 4 OKRIC RIC2005010100050505 0.153 N
137 4 OKRIC RIC2005010100060506 0.154 N
180 4 185 5 34 60 +
188 5 189 5 34 60+
189 5 187 5 34 60+
186 5 180 6 34 60+
181 6 179 7 34 60+
182 7 184 7 34 60 +
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-83 86-89
123456
1234
123
1234
137 4 OKRIC
RIC2005020916142114
0
069
D
174
3
168
2115
0.069
00100001104
137 4 OKRIC
RIC2005020919160016
0
111
N
197
5
196
5
34
0018
00100000004
137 4 OKRIC
RIC2005020922190319
0
132
N
200
9
202
11
34
0321
00100000004
137 4 OKRIC
RIC2005021003200820
0
265
N
308
10
310
11
34
0822
00100000004
137 4 OKRIC
RIC2005021015392039
0
050
D
302
18
295
22
34
2040
00100000004
137 4 OKRIC
RIC2005021102450745
0
050
N
309
9
311
13
34
0747
00100000004
137 4 OKRIC
RIC2005030713051805
40000.
00 M
205
18
197
20
34
60 +
00000000104
Figure A-2. Example check_records.dat file.
A-5
-------
Table A-2. Descri
ption of records in check records.dat file.
Record
number*
Non-zero flags
Situation
Possible solution
1
3, 8, and 9
4-character string in
columns 30-113; no
numbers in columns
87-89; number in
column 90
Do not use record; 4-
character string appears
to be a time
2-6
3
4-character string in
columns 30-113
Eliminate characters
after column 92
7
9
number in column 90
Shift data from 90 to
113 left one column and
eliminate columns
beginning with "34"
"actual line number in file is record number p
us 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-83 86-89
123456
1234
123
1234
137 4 OKRIC
RIC2005011110381538 M M
M
M
M
M
34
60 +
10001111000
137 4 OKRIC
RIC2005011110391539 M M
M
M
60
7
34
60 +
10001100000
137 4 OKRIC
RIC2005011110401540 0.216 D
M
M
128
7
34
60 +
10001100000
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
Station Name
State
KIJD
WILLIMANTIC WINDHAM AP
CT
KAQW
NORTH ADAMS HARRIMAN AP
MA
KCQX
CHATHAM MUNI AP
MA
KFIT
FITCHBURG MUNI AP
MA
KORE
ORANGE MUNI AP
MA
KPSF
PITTSFIELD MUNI AP
MA
KPYM
PLYMOUTH MUNI AP
MA
KTAN
TAUNTON MUNI AP
MA
KCAR
CARIBOU WFO
ME
KFVE
FRENCHVILLE AROOSTOOK AP
ME
KHUL
HOULTON AP
ME
KMLT
MILLINOCKET MUNI AP
ME
KAFN
JAFFREY MUNI AP
NH
KCON
CONCORD ASOS
NH
KUUU
NEWPORT STATE AP
RI
KWST
WESTERLY STATE AP
RI
KDDH
BENNINGTON MORSE ST AP
VT
KMPV
MONTPELIER AP
VT
KMVL
MORRISVILLE STOWE STATE AP
VT
KVSF
SPRINGFIELD HARTNESS AP
VT
B-l
-------
Table B-2. Region 2 ASOS stations.
Station
Station Name
State
K12N
ANDOVER AEROFLEX AP
NJ
KART
WATERTOWN AP
NY
KDKK
DUNKIRK CHAUTAUQUA AP
NY
KDSV
DANSVILLE AP
NY
KELZ
WELLSVILLE MUNI AP
NY
KFZY
FULTON OSWEGO CO AP
NY
KGFL
GLENS FALLS AP
NY
KMSS
MAS SENA AP
NY
KMTP
MONT AUK AP
NY
KNYC
NEW YORK CNTRL PRK WSF
NY
KPBG
PLATTSBURGH AFB
NY
KPEO
PENN YAN AP
NY
KRME
GRIFFISS AFB
NY
KSLK
SARANAC RGNL AP
NY
Table B-3. Region 3 ASOS stations.
Station
Station Name
State
KOXB
OCEAN CITY MUNI AP
MD
KAOO
ALTOONA BLAIR CO AP
PA
KBFD
BRADFORD FAA AP
PA
KFIG
CLEARFIELD LAWRENCE AP
PA
KGKJ
PORT MEADVILLE AP
PA
KAKQ
NORFOLK RICH
VA
KOFP
ASHLAND HANOVER CO MUNI
AP
VA
KBKW
BECKLEY RALEIGH CO AP
wv
KEKN
ELKINS RANDOLPH COUNTY AP
wv
B-2
-------
Table B-4. Region 4 ASOS stations.
Station
Station Name
State
KANB
ANNISTON ARPT ASOS
AL
KDCU
DECATUR PRYOR FLD
AL
KEET
ALABASTER 5 SSE
AL
KMSL
MUSCLE SHOALS AP
AL
KTOI
TROY AF
AL
K40J
PERRY FOLEY AP
FL
KAAF
APALACHICOLA AP
FL
KCTY
CROSS CITYAP
FL
KMTH
MARATHON AP
FL
KAMG
ALMA BACON CO AP
GA
KDNL
AUGUSTA DANIEL FLD
GA
KFFC
ATLANTA
GA
KGVL
GAINESVILLE GILMER AP
GA
KRMG
ROME R B RUSSELL AP
GA
KSSI
BRUNSWICK CAA AP
GA
KVPC
CARTERSVILLE AP
GA
KJKL
JACKSON
KY
KGWO
GREENWOOD FAA AP
MS
KECG
ELIZABETH CITY CG STN
NC
KHSE
CAPE HATTERAS AP
NC
KCUB
COLUMBIA OWENS DWTN AP
sc
KOGB
ORANGEBURG MUNI AP
sc
B-3
-------
Table B-5. Region 5 ASOS stations.
Station
Station Name
State
KADG
ADRIAN LENAWEE CO AP
MI
KANJ
SAULT STE MARIE SNDRSN
MI
KAPN
ALPENA AP
MI
KGLR
GAYLORD OTSEGO CO AP
MI
KHTL
HOUGHTON LAKE WSO AP
MI
KPLN
PELLSTON AP
MI
KBDE
BAUDETTE INTL AP
MN
KBRD
BRAINERD CROW WING CO AP
MN
KHIB
HIBBING CHISHOLM HIBBING A
MN
KINL
INTERNATIONAL FALLS AP
MN
KPKD
PARK RAPIDS 2 S
MN
KAKR
AKRON FULTON INTL AP
OH
KBJJ
WOOSTER WAYNE CO AP
OH
KFDY
FINDLAY AP
OH
KHZY
ASHTABULA CO AP
OH
KILN
CINCINNATI
OH
KLPR
ELYRIA LORAIN CO AP
OH
KMNN
MARION MUNI AP
OH
KTDZ
TOLEDO METCALF FLD
OH
KASX
ASHLAND KENNEDY MEM AP
WI
KAUW
WAUSAU ASOS
WI
KHYR
HAYWARD MUNI AP
WI
KISW
WISCONSIN RAPIDS
ALEXANDER
WI
KOVS
BOSCOBEL AP
WI
B-4
-------
Table B-6. Region 6 ASOS stations.
Station
Station Name
State
KESF
ALEXANDRIA ESLER FLD
LA
KTVR
TALLULAH VICKSBURG AP
LA
KCAO
CLAYTON MUNI ARPK AP
NM
KDMN
DEMING F AA AP
NM
KGUP
GALLUP FAA AP
NM
KLVS
LAS VEGAS FAA AP
NM
KRTN
RATON MUNI CREWS AP
NM
KTCC
TUCUMCARI FAA AP
NM
KTCS
TRUTH OR CONSEQUENCE AP
NM
KGUY
GUYMON MUNI AP
OK
K6R6
DRYDEN TERRELL CO AP
TX
KALI
ALICE CAA AP
TX
KBAZ
NEW BRAUNFELS AP
TX
KBGD
BORGER HUTCHINSON CO AP
TX
KBMQ
BURNET AP
TX
KCOT
COTULLA
TX
KCRS
CORSICANA CAMPBELL FLD
TX
KCXO
CONROE MONTGOMERY CO AP
TX
KDHT
DALHART FAA AP
TX
KDRT
DEL RIO AP
TX
KHDO
HONDO AP
TX
KJCT
JUNCTION
TX
KLBX
ANGLETON BRAZORIA AP
TX
KLVJ
HOUSTON CLOVER FLD
TX
KMWL
MINERAL WELLS AP
TX
KPIL
PORT ISABEL CAMERON AP
TX
KPSX
PALACIOS FAA AP
TX
KRKP
ROCKPORT ASOS
TX
KTRL
TERRELL MUNI AP
TX
KUTS
HUNTSVILLE MUNI AP
TX
KVCT
VICTORIA ASOS
TX
B-5
-------
Table B-7. Region 7 ASOS stations.
Station
Station Name
State
KAMW
AMES MUNI AP
IA
KBRL
BURLINGTON AP
IA
KDVN
DAVENPORT
IA
KEST
ESTHERVILLE MUNI AP
IA
KIOW
IOWA CITY CAA AP
IA
KLWD
LAMONI MUNI AP
IA
KMCW
MASON CITY AP
IA
KMIW
MARSHALLTOWN MUNI AP
IA
KOTM
OTTUMWA AP
IA
KSPW
SPENCER MUNI AP
IA
KCNK
CONCORDIA ASOS
KS
KDDC
DODGE CITY
KS
KGLD
GOODLAND
KS
KHLC
HILL CITY 1 NE
KS
KDMO
SEDALIA MEM AP
MO
KIRK
KIRKS VILLE RGNL AP
MO
KLXT
LEES SUMMIT MUNI AP
MO
KPOF
POPLAR BLUFF MUNI AP
MO
KAIA
ALLIANCE MUNI AP
NE
KBFF
SCOTTSBLUFF AP
NE
KCDR
CHADRON F AA AP
NE
KHSI
HASTINGS MUNI AP
NE
KLBF
NORTH PLATTE RGNL AP
NE
KMCK
MCCOOK MUNI AP
NE
KODX
EVELYN SHARP FIELD
NE
KOFK
NORFOLK
NE
KSNY
SIDNEY 3 S
NE
KVTN
VALENTINE MILLER AP
NE
B-6
-------
Table B-8. Region 8 ASOS stations.
Station
Station Name
State
KAKO
AKRON 1 N
CO
KALS
ALAMOSA BERGMAN FLD
CO
KCAG
CRAIG ASOS
CO
KCEZ
CORTEZ ASOS
CO
KDRO
DURANGO ASOS
CO
KEEO
MEEKER AP
CO
KITR
BURLINGTON CARSON AP
CO
KLIC
LIMON WSMO
CO
KLXV
LEADVILLE 2 SW
CO
KMT J
MONTROSE ASOS
CO
KBHK
BAKER MUNI AP
MT
KBTM
BUTTE BERT MOONEY AP
MT
KGGW
GLASGOW
MT
KHVR
HAVRE AP ASOS
MT
KJDN
JORDAN AP
MT
KLVM
LIVINGSTON AP
MT
KMLS
MILES CITY AP
MT
KOLF
WOLF POINT INTL AP
MT
KDIK
DICKINSON FAA AP
ND
KHEI
HETTINGER MUNI AP
ND
KISN
WILLISTON SLOULIN FLD
ND
KJMS
JAMESTOWN FAA AP
ND
K8D3
SISSETON MUNI AP
SD
K9V9
CHAMBERLAIN MUNI AP
SD
KABR
ABERDEEN
SD
KATY
WATERTOWN FAA AP
SD
KCUT
CUSTER CO AP
SD
KD07
FAITH MUNI AP
SD
KHON
HURON AP
SD
KMBG
MOBRIDGE MUNI AP
SD
KMHE
MITCHELL AP
SD
KPHP
PHILIP 2 N
SD
KPIR
PIERRE FAA AP
SD
KCNY
CANYONLANDS ASOS
UT
KMLF
MILFORD MUNI AP
UT
KVEL
VERNAL AP
UT
KDGW
CONVERSE CO AP ASOS
WY
KGCC
GILLETTE CAMPBELL AP
WY
KLAR
LARAMIE AP
WY
B-7
-------
Table B-8. Continued.
Station
Station Name
State
KLND
LANDER AP
WY
KP60
YELLOWSTONE LAKE
WY
KRIW
RIVERTON
WY
KRWL
RAWLINS AP
WY
KSHR
SHERIDAN AP
WY
KTOR
TORRINGTON MUNI AP
WY
Table B-9. Region 9 ASOS stations.
Station
Station Name
State
KIGM
KINGMAN AP
AZ
KINW
WINSLOW AP
AZ
KPGA
PAGE MUNI AP
AZ
KRQE
WINDOW ROCK AP
AZ
KSAD
SAFFORD MUNI AP
AZ
KSJN
ST JOHNS INDUSTRIAL AP
AZ
KAAT
ALTURAS MUNI AP
CA
KACV
ARC ATA AP
CA
KAVX
AVALON CATALINA AP
CA
KBIH
BISHOP AP
CA
KBLU
BLUE CANYON
CA
KCEC
CRESCENT CITY CAA AP
CA
KHJO
HANFORD MUNI AP
CA
KMAE
MADERA MUNI AP
CA
KMCE
MERCED MUNI AP
CA
KPRB
PASO ROBLES CAA AP
CA
KRBL
RED BLUFF
CA
KSIY
MONTAGUE
CA
KUKI
UKIAH FAA AP
CA
KWVI
WATS ON VILLE MUNI AP
CA
KELY
ELY AIRPORT
NV
KWMC
WINNEMUCCA AP
NV
B-8
-------
Table B-10.
Region 10 ASOS stations.
Station
Station Name
State
PABR
BARROW WSO AP
AK
PACD
COLD BAY AP
AK
PACV
CORDOVA AP
AK
PADE
DEERING AP
AK
PAGK
GULKANA AP
AK
PAMC
MCGRATH AP
AK
PANN
NENANA MUNI AP
AK
PANT
ANNETTE WSO AP
AK
PAPB
ST GEORGE ISLAND AP
AK
PAQT
NUIQSUT AP
AK
PASN
ST PAUL ISLAND AP
AK
PASO
SELDOVIA AP
AK
PATO
PORTAGE GLACIER V C
AK
PAVL
KIVALINA AP
AK
PAWD
SEWARD
AK
PAYA
YAKUT AT AP
AK
KBYI
BURLEY F AA AP
ID
KJER
JEROME CO AP
ID
KLLJ
CHALLIS AP
ID
KMLP
MULLAN PASS VOR/DME
ID
KMYL
MCCALL AP
ID
KP69
LOWELL THREE RIVERS
ID
KRXE
REXBURG MADISON CO AP
ID
KAST
ASTORIA AP PORT OF
OR
KBKE
BAKER CAA AP
OR
KBNO
BURNS MUNI AP
OR
KHRI
HERMISTON MUNI AP
OR
KONO
ONTARIO
OR
KRBG
ROSEBURG RGNL AP
OR
KREO
ROME ST AP
OR
KDEW
DEERPARK
WA
KEAT
WENATCHEE AP
WA
KELN
ELLENSBURG BOWERS FLD
WA
KEPH
EPHRATA AP
WA
KOMK
OMAK
WA
KPUW
PULLMAN MOSCOW RGNL AP
WA
KSHN
SHELTON AP
WA
KUIL
QUILLAYUTE AP
WA
B-9
-------
KUIL
~
KSHN
~
KAST
KOMK
iKEPH 4
KDEW
KHVR
KHRI
KBKE
~
KCEC
~
PACVKACV*
~
KRBG
KPUt/
~
KP69
~
:KMYL
kbdekinl
# ~
KB NO KONO
KBTM
~ KLVM
~
KPeo
KHIB
KSIY
KAAT
KRBL
~
KUKI
KREO
KWMC
KRX£
kggwkolf KISN
^KJdTj *
* KMLS .«™£d KASX
kbhi*khei ~ J***
KHH,% KMBG DADO *
KSHR KDOt f^8D3KATY
XISW
KFVE
~
KCARKHUL
w&ilt
KJER
~ ^KBYI
KLU
~
KLN^
-kCU;-kp,r^
KCU T ^ K9Vy KM HE
m a a
KANJ
~
KPLN
~KGL|!
*KHTL
~
KBLU
^ KBIH
~ ^2MGEV\
KPflB
KAVX
,KRIW ~ ^ #
KDGW KCDR KVTN
KRWL jY « »
+ KMNN
~
KJKL
KAOO
KEKN
KDDC
KIGM
KRQE
KINW^KGUP
A
KSJN
.^JN KGUY
KLVS * KDI^T
~
KPOF
KOXB
' -f
KOFP
* KAKQ
~ KECG
~
KHSE
PAVL
KMSLKRMQ
KDCU%
KVfC
KSAD
KTCS
~
KDMN
KMWL KTRL
1
-------
' PAQT
~
PA0E
~
PASN
~
PAGK
PAPB
~
PAMC
*
~
' PACD
' PATO
~
PASO PA#£f
'* ~ \-
' PAYA
~
'mnmmn
*
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-23-007
Environmental Protection Air Quality Assessment Division October 2023
Agency Research Triangle Park, NC
------- |