The National Weather Service's National Centers for Environmental Prediction (NCEP) runs a series of computer analyses and forecasts operationally. NOAA's Air Resources Laboratory (ARL) routinely uses NCEP model data for use in air quality transport and dispersion modeling calculations. In 1989 ARL began to archive some of these datasets for future research studies. ARL has in the past, or is presently archiving the following NCEP datasets, which can be retrieved via ftp by clicking on the name of the dataset.
For further information on model changes see the following web sites:
Currently Available Data
Data No Longer Updated
All of theses datasets contain basic fields such as the u- and v-wind components, temperature, and humidity. However, the archives differ from each other because of the horizontal and vertical resolution, as well as in the specific fields provided by NCEP. All fields were selected by ARL according to what is most relevant for transport and dispersion studies and disk space limitations.
Data Packing Format
NCEP typically saves their model output in GRIB format. However, at ARL the data are reprocessed and stored in a 1-byte packing algorithm. This 1-byte packing is a bit more compact than GRIB and can be directly used on a variety of computing platforms with direct access I/O.
The data array is packed and stored into one byte characters. To preserve as much data precision as possible the difference between the values at grid points is saved and packed rather than the actual values. The grid is then reconstructed by adding the differences between grid values starting with the first value, which is stored in unpacked ASCII form in the header record. To illustrate the process, assume that a grid of real data, R, of dimensions i,j is given by the below example.
1,j 2,j .... i-1,j i,j 1,j-1 2,j-1 .... i-1,j-1 i,j-1 .... .... .... .... .... 1,2 2,2 .... i-1,2 i,2 1,1 2,1 .... i-1,1 i,1
The packed value, P, is then given by
Pi,j = (Ri,j - Ri-1,j)* (2**(7-N)),
where the scaling exponent
N = ln dRmax / ln 2 .
The value of dRmax is the maximum difference between any two adjacent grid points for the entire array. It is computed from the differences along each i index holding j constant. The difference at index (1,j) is computed from index (1,j-1), and at 1,1 the difference is always zero. The packed values are one byte unsigned integers, where values from 0 to 126 represent -127 to -1, 127 represents zero, and values of 128 to 254 represent 1 to 127. Each record length is then equal in bytes to the number of array elements plus 50 bytes for the header label information. The 50 byte label field precedes each packed data field and contains the following ASCII data:
Field Format Description Year I2 Greenwich date for which data valid Month I2 " Day I2 " Hour I2 " Forecast* I2 Hours forecast, zero for analysis Level I2 Level from the surface up (see Table 3) Grid I2 Grid identification (see Table 1) Variable A4 Variable label (see Table 2) Exponent I4 Scaling exponent needed for unpacking Precision E14.7 Precision of unpacked data Value 1,1 E14.7 Unpacked data value at grid point 1,1 *Forecast hour is -1 for missing data.
The following Fortran90 program can be used to to unpack and read the first few elements of the data array for each record of an ARL packed meteorological file.