netcdf ua.cdl { // Upper Air netCDF definition dimensions: recNum = UNLIMITED ; manLevel = 22 ; sigTLevel = 65 ; sigWLevel = 50 ; staNameLen = 6 ; variables: long wmoStat(recNum) ; wmoStat:long_name = "WMO Station Number" ; wmoStat:reference = "Volume A of WMO publication 9" ; wmoStat:_Fillvalue = -99999 ; char staName(recNum, staNameLen) ; staName:long_name = "Station Name" ; staName:_FillValue = "\0"; staName:reference = "snworld.tbl"; float staLat(recNum) ; staLat:long_name = "Station Latitude" ; staLat:_FillValue = -99999.f; staLat:valid_range = -90.0, 90.0; staLat:units = "degrees"; float staLon( recNum ) ; staLon:long_name = "Station longitude"; staLon:_FillValue = -99999.f; staLon:valid_range = -180.0, 180.0; staLon:units = "degrees"; int staElev( recNum ) ; staElev:long_name = "Station elevation"; staElev:_FillValue = -99999; staElev:units = "meters"; long sndTime(recNum) ; sndTime:long_name = "Sounding Time" ; sndTime:units = "seconds since (1970-1-1 00:00:0.0)" ; sndTime:_FillValue = -99999; int numMand(recNum) ; numMand:long_name = "Number of Mandatory Levels" ; numMand:valid_range = 0, 22 ; numMand:_FillValue = -99999; int numSigT(recNum) ; numSigT:long_name = "Number of Significant Levels wrt T" ; numSigT:valid_range = 0, 60; numSigT:_FillValue = -99999; int numSigW(recNum) ; numSigW:long_name = "Number of Significant Levels wrt W" ; numSigW:valid_range = 0, 50; numSigW:_FillValue = -99999; int numMwnd(recNum) ; numMwnd:long_name = "Number of Maximum Wind Levels" ; numMwnd:valid_range = 0, 1; numMwnd:_FillValue = -99999; long relTime(recNum) ; relTime:long_name = "Sounding Release Time" ; relTime:units = "seconds since (1970-1-1 00:00:0.0)" ; relTime:_FillValue = -99999; int sndType(recNum) ; sndType:long_name = "Instrument Type" ; sndType:reference = "Federal Meteorological Handbook No. 4" ; sndType:_FillValue = -99999; float prMan(recNum, manLevel) ; prMan:long_name = "Pressure - Mandatory level" ; prMan:units = "millibars"; prMan:_FillValue = -99999.f; int htMan(recNum, manLevel) ; htMan:long_name = "Geopotential - Mandatory level" ; htMan:units = "meters"; htMan:_FillValue = -99999; float tpMan(recNum, manLevel) ; tpMan:long_name = "Temperature - Mandatory level" ; tpMan:units = "Celsius"; tpMan:_FillValue = -99999.f; float tdMan(recNum, manLevel) ; tdMan:long_name = "Dew Point - Mandatory level" ; tdMan:units = "Celsius"; tdMan:_FillValue = -99999.f; int wdMan(recNum, manLevel) ; wdMan:long_name = "Wind Direction - Mandatory level" ; wdMan:units = "degrees"; wdMan:_FillValue = -99999; float wsMan(recNum, manLevel) ; wsMan:long_name = "Wind Speed - Mandatory level" ; wsMan:units = "meters/second"; wsMan:_FillValue = -99999.f; float prSigT(recNum, sigTLevel) ; prSigT:long_name = "Pressure - Significant level wrt T" ; prSigT:units = "millibars"; prSigT:_FillValue = -99999.f; float tpSigT(recNum, sigTLevel) ; tpSigT:long_name = "Temperature - Significant level wrt T" ; tpSigT:units = "Celsius"; tpSigT:_FillValue = -99999.f; float tdSigT(recNum, sigTLevel) ; tdSigT:long_name = "Dew Point - Significant level wrt T" ; tdSigT:units = "Celsius"; tdSigT:_FillValue = -99999.f; float htSigW(recNum, sigWLevel) ; htSigW:long_name = "Geopotential - Significant level wrt Winds" ; htSigW:units = "meters"; htSigW:_FillValue = -99999.f; float wsSigW(recNum, sigWLevel) ; wsSigW:long_name = "Wind Speed - Significant level wrt Winds" ; wsSigW:units = "meters/second"; wsSigW:_FillValue = -99999.f; int wdSigW(recNum, sigWLevel) ; wdSigW:long_name = "Wind Dir - Significant level wrt Winds" ; wdSigW:units = "degrees"; wdSigW:_FillValue = -99999; float prTrop(recNum) ; prTrop:long_name = "Pressure - Tropopause level" ; prTrop:units = "millibars"; prTrop:_FillValue = -99999.f; float tpTrop(recNum) ; tpTrop:long_name = "Temperature - Tropopause level" ; tpTrop:units = "Celsius"; tpTrop:_FillValue = -99999.f; float tdTrop(recNum) ; tdTrop:long_name = "Dew Point - Tropopause level" ; tdTrop:units = "Celsius"; tdTrop:_FillValue = -99999.f; float wsTrop(recNum ) ; wsTrop:long_name = "Wind Speed - Tropopause level" ; wsTrop:units = "meters/second"; wsTrop:_FillValue = -99999.f; int wdTrop(recNum) ; wdTrop:long_name = "Wind Direction - Tropopauselevel" ; wdTrop:units = "degrees"; wdTrop:_FillValue = -99999; float prMaxW(recNum); prMaxW:long_name = "Pressure - Maximum wind level" ; prMaxW:units = "millibars"; prMaxW:_FillValue = -99999.f; int wdMaxW(recNum) ; wdMaxW:long_name = "Wind Direction - Maximum wind level" ; wdMaxW:units = "degrees"; wdMaxW:_FillValue = -99999; float wsMaxW(recNum) ; wsMaxW:long_name = "Wind Speed - Maximum wind level" ; wsMaxW:units = "meters/second"; wsMaxW:_FillValue = -99999.f; :title = "NUWG Upper Air definition"; :version = 1.0; // This definition reflects the general conventions followed by the NUWG // group in regards to the naming of variables, use of attributes, the // representation of time, and station identification. These are considered // the minimum variables required in files used for upper air data // exchange. // // The number of levels will be defined by the user in the appropriate // dimensions, but casual observation of RAOB data has shown up to 130 // sigT and 65 sigW levels. Mandatory Raob data will typically be // dimensioned at 21 however, CLASS data the mandatory dimension will be // 1 (for the surface data) and the significant levels may be up to 200. // It is imperative that the user of this data be responsible for checking // the level dimensions because of this variance. // // We follow the WMO conventions with respect to the following: // // 1) Surface data is stored as the first mandatory level and is followed // by the standard isobaric levels. // // 2) Release time and instrument type are taken from fields in the TTBB. // }