netcdf upair { // NUWG upper air netCDF definition dimensions: recNum = UNLIMITED ; manLevel = ; mWndNum = ; sigTLevel = ; sigWLevel = ; staNameLen = 6 ; variables: long wmoStat(recNum) ; wmoStat:long_name = "WMO Station Number" ; wmoStat:reference = "Volume A of WMO publication 9" ; wmoStat:_Fillvalue = ; char staName(recNum, staNameLen) ; staName:long_name = "Station Identifier" ; staName:_FillValue = "\0"; float staLat(recNum) ; staLat:long_name = "Station Latitude" ; staLat:units = ; staLat:valid_range = ; staLat:_FillValue = ; float staLon(recNum) ; staLon:long_name = "Station Longitude" ; staLon:units = ; staLon:valid_range = ; staLon:_FillValue = ; float staElev(recNum) ; staElev:long_name = "Station Elevation" ; staElev:units = ; staElev:valid_range = ; staElev:_FillValue = ; double synTime(recNum) ; synTime:long_name = "Synoptic Time" ; synTime:units = "seconds since (1970-1-1 00:00:0.0)" ; synTime:_FillValue = ; long numMand(recNum) ; numMand:long_name = "Number of Mandatory Levels" ; numMand:valid_range = 0, 21 ; long numSigT(recNum) ; numSigT:long_name = "Number of Significant Levels wrt T" ; numSigT:valid_range = ; long numSigW(recNum) ; numSigW:long_name = "Number of Significant Levels wrt W" ; numSigW:valid_range = ; long numMwnd(recNum) ; numMwnd:long_name = "Number of Maximum Wind Levels" ; numMwnd:units = ; long relTime(recNum) ; relTime:long_name = "Sounding Release Time" ; relTime:units = "seconds since (1970-1-1 00:00:0.0)" ; long sondTyp(recNum) ; sondTyp:long_name = "Instrument Type" ; sondTyp:reference = "Federal Meteorological Handbook No. 4" ; sondTyp:_FillValue = ; float prMan(recNum, manLevel) ; prMan:long_name = "Pressure - Mandatory level" ; prMan:units = ; prMan:valid_range = ; prMan:_FillValue = ; float htMan(recNum, manLevel) ; htMan:long_name = "Geopotential - Mandatory level" ; htMan:units = ; htMan:valid_range = ; htMan:_FillValue = ; float tpMan(recNum, manLevel) ; tpMan:long_name = "Temperature - Mandatory level" ; tpMan:units = ; tpMan:valid_range = ; tpMan:_FillValue = ; float tdMan(recNum, manLevel) ; tdMan:long_name = "Dew Point - Mandatory level" ; tdMan:units = ; tdMan:valid_range = ; tdMan:_FillValue = ; float wdMan(recNum, manLevel) ; wdMan:long_name = "Wind Speed - Mandatory level" ; wdMan:units = ; wdMan:valid_range = ; wdMan:_FillValue = ; float wsMan(recNum, manLevel) ; wsMan:long_name = "Wind Direction - Mandatory level" ; wsMan:units = ; wsMan:valid_range = ; wsMan:_FillValue = ; float prSigT(recNum, sigTLevel) ; prSigT:long_name = "Pressure - Significant level wrt T" ; prSigT:units = ; prSigT:valid_range = ; prSigT:_FillValue = ; float tpSigT(recNum, sigTLevel) ; tpSigT:long_name = "Temperature - Significant level wrt T" ; tpSigT:units = ; tpSigT:valid_range = ; tpSigT:_FillValue = ; float wsSigT(recNum, sigTLevel) ; wsSigT:long_name = "Wind Speed - Significant level wrt T" ; wsSigT:units = ; wsSigT:valid_range = ; wsSigT:_FillValue = ; float wdSigT(recNum, sigTLevel) ; wdSigT:long_name = "Wind Direction - Significant level wrt T" ; wdSigT:units = ; wdSigT:valid_range = ; wdSigT:_FillValue = ; float htSigW(recNum, sigWLevel) ; htSigW:long_name = "Geopotential - Significant level wrt Winds" ; htSigW:units = ; htSigW:valid_range = ; htSigW:_FillValue = ; float wsSigW(recNum, sigWLevel) ; wsSigW:long_name = "Wind Speed - Significant level wrt Winds" ; wsSigW:units = ; wsSigW:valid_range = ; wsSigW:_FillValue = ; float wdSigW(recNum, sigWLevel) ; wdSigW:long_name = "Wind Direction - Significant level wrt Winds" ; wdSigW:units = ; wdSigW:valid_range = ; wdSigW:_FillValue = ; float prTrop(recNum) ; prTrop:long_name = "Pressure - Tropopause level" ; prTrop:units = ; prTrop:valid_range = ; prTrop:_FillValue = ; float htTrop(recNum) ; htTrop:long_name = "Geopotential - Tropopause level" ; htTrop:units = ; htTrop:valid_range = ; htTrop:_FillValue = ; float tpTrop(recNum) ; tpTrop:long_name = "Temperature - Tropopause level" ; tpTrop:units = ; tpTrop:valid_range = ; tpTrop:_FillValue = ; float tdTrop(recNum) ; tdTrop:long_name = "Dew Point - Tropopause level" ; tdTrop:units = ; tdTrop:valid_range = ; tdTrop:_FillValue = ; float wsTrop(recNum, sigWLevel) ; wsTrop:long_name = "Wind Speed - Tropopause level" ; wsTrop:units = ; wsTrop:valid_range = ; wsTrop:_FillValue = ; float wdTrop(recNum, sigWLevel) ; wdTrop:long_name = "Wind Direction - Tropopauselevel" ; wdTrop:units = ; wdTrop:valid_range = ; wdTrop:_FillValue = ; float prMaxW(recNum, mWndNum); prMaxW:long_name = "Pressure - Maximum wind level" ; prMaxW:units = ; prMaxW:valid_range = ; prMaxW:_FillValue = ; float htMaxW(recNum, mWndNum); htMaxW:long_name = "Geopotential - Maximum wind level" ; htMaxW:units = ; htMaxW:valid_range = ; htMaxW:_FillValue = ; float wdMaxW(recNum, mWndNum) ; wdMaxW:long_name = "Wind Direction - Maximum wind level" ; wdMaxW:units = ; wdMaxW:valid_range = ; wdMaxW:_FillValue = ; float wsMaxW(recNum, mWndNum) ; wsMaxW:long_name = "Wind Speed - Maximum wind level" ; wsMaxW:units = ; wsMaxW:valid_range = ; wsMaxW:_FillValue = ; :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. // // 3) Although there may be unlimited max winds, realistically one could // safely dimension it (mWndNum) to be 8 and save the "most" significant // values. Casual observation suggests that only a couple of max winds // are typically reported. }