netcdf ngm-g { // NCEP Early Domestic Product Set from NGM dimensions: record = UNLIMITED ; // (reference time, forecast time) level = 11 ; liso = 1 ; // layer between two isobaric levels lat = 33 ; // US staggered grid, corners filled lon = 36 ; datetime_len = 21 ; // string length for datetime strings nmodels = 2 ; // both NGM model and ROI models accum = 2 ; // time range for accumulations nav = 1 ; // For navigation. Variables that use // this dimension define a mapping between // (x, y) indices and (lat, lon) coords. nav_len = 100 ; // max length for navigation character strings variables: double reftime(record) ; // reference time of the model reftime:long_name = "reference time" ; reftime:units = "hours since 1992-1-1" ; double valtime(record) ; // forecast time ("valid" time) valtime:long_name = "valid time" ; valtime:units = "hours since 1992-1-1" ; :record = "reftime, valtime" ; // "dimension attribute" -- means // (reftime, valtime) uniquely // determine record char datetime(record, datetime_len) ; // derived from reftime datetime:long_name = "reference date and time" ; // units YYYY-MM-DD hh:mm:ssZ (ISO 8601) float valtime_offset(record) ; // derived as valtime-reftime valtime_offset:long_name = "hours from reference time" ; valtime_offset:units = "hours" ; float level(level) ; level:long_name = "level" ; level:units = "hectopascals" ; :liso = "liso_bot, liso_top" ; // (liso_bot, liso_top) uniquely // determines liso float liso_bot(liso) ; liso_bot:long_name = "bottom level of layer between 2 isobaric levels" ; liso_bot:units = "hectopascals" ; float liso_top(liso) ; liso_top:long_name = "top level of layer between 2 isobaric levels" ; liso_top:units = "hectopascals" ; // The following lat and lon coordinate variables are redundant, // since the navigation variables provide the necessary information. // The extra information is included here for human readability. float lat(lat) ; lat:long_name = "latitude" ; lat:units = "degrees_north" ; float lon(lon) ; lon:long_name = "longitude" ; lon:units = "degrees_east" ; long model_id(nmodels) ; model_id:long_name = "generating process ID number" ; // navigation variables all use nav dimension char nav_model(nav, nav_len) ; // navigation parameterization nav_model:long_name = "navigation model name" ; int grid_type_code(nav) ; grid_type_code:long_name = "GRIB-1 GDS data representation type" ; char grid_type(nav, nav_len) ; grid_type:long_name = "GRIB-1 grid type" ; char grid_name(nav, nav_len) ; grid_name:long_name = "grid name" ; int grid_center(nav) ; grid_center:long_name = "GRIB-1 originating center ID" ; int grid_number(nav) ; grid_number:long_name = "GRIB-1 catalogued grid numbers" ; grid_number:_FillValue = -9999 ; char i_dim(nav, nav_len) ; i_dim:long_name = "longitude dimension name" ; char j_dim(nav, nav_len) ; j_dim:long_name = "latitude dimension name" ; int Ni(nav) ; Ni:long_name = "number of points along a latitude circle" ; int Nj(nav) ; Nj:long_name = "number of points along a longitude circle" ; float La1(nav) ; La1:long_name = "latitude of first grid point" ; La1:units = "degrees_north" ; float Lo1(nav) ; Lo1:long_name = "longitude of first grid point" ; Lo1:units = "degrees_east" ; float La2(nav) ; La2:long_name = "latitude of last grid point" ; La2:units = "degrees_north" ; float Lo2(nav) ; Lo2:long_name = "longitude of last grid point" ; Lo2:units = "degrees_east" ; float Di(nav) ; Di:long_name = "Longitudinal direction increment" ; Di:units = "degrees" ; float Dj(nav) ; Dj:long_name = "Latitudinal direction increment" ; Dj:units = "degrees" ; byte ResCompFlag(nav) ; ResCompFlag:long_name = "resolution and component flags" ; // end of navigation variables float LI(record, liso, lat, lon) ; // Lifted index between two levels LI:long_name = "lifted index" ; LI:units = "degK" ; LI:_FillValue = -9999.0f ; // To fill grid corners LI:navigation = "nav" ; float P_trop(record, lat, lon) ; P_trop:long_name = "pressure at tropopause" ; P_trop:units = "Pa" ; P_trop:_FillValue = -9999.f ; P_trop:navigation = "nav" ; float PRECIP(record, lat, lon) ; PRECIP:long_name = "total precipitation over accumulation interval" ; PRECIP:units = "kg/m2" ; PRECIP:begin_or_end = "end" ; PRECIP:_FillValue = -9999.f ; PRECIP:navigation = "nav" ; float PRECIP_accum_times(record, accum) ; PRECIP_accum_times:long_name = "precipitation accumulation interval" ; PRECIP_accum_times:units = "hours" ; PRECIP_accum_times:_FillValue = -9999.f ; float P_msl(record, lat, lon) ; P_msl:long_name = "pressure reduced to MSL" ; P_msl:units = "Pa" ; P_msl:_FillValue = -9999.f ; P_msl:navigation = "nav" ; float RH(record, level, lat, lon) ; RH:long_name = "relative humidity" ; RH:units = "percent" ; RH:_FillValue = -9999.f ; RH:navigation = "nav" ; float T(record, level, lat, lon) ; T:long_name = "temperature" ; T:units = "degK" ; T:_FillValue = -9999.f ; T:navigation = "nav" ; float T_trop(record, lat, lon) ; T_trop:long_name = "temperature at tropopause" ; T_trop:units = "degK" ; T_trop:_FillValue = -9999.f ; T_trop:navigation = "nav" ; float Z(record, level, lat, lon) ; Z:long_name = "geopotential height" ; Z:units = "gp m" ; Z:_FillValue = -9999.f ; Z:navigation = "nav" ; // georeference info float omega(record, level, lat, lon) ; omega:long_name = "pressure vertical velocity" ; omega:units = "Pa/s" ; omega:_FillValue = -9999.f ; omega:navigation = "nav" ; float u(record, level, lat, lon) ; u:long_name = "u-component of wind" ; u:units = "meters/second" ; u:_FillValue = -9999.f ; u:navigation = "nav" ; float u_trop(record, lat, lon) ; // Eastward wind at tropopause u_trop:long_name = "u-component of wind at tropopause" ; u_trop:units = "meters/second" ; u_trop:_FillValue = -9999.0f ; // To fill grid corners u_trop:navigation = "nav" ; float v(record, level, lat, lon) ; v:long_name = "v-component of wind" ; v:units = "meters/second" ; v:_FillValue = -9999.f ; v:navigation = "nav" ; float v_trop(record, lat, lon) ; // Northward wind at tropopause v_trop:long_name = "v-component of wind at tropopause" ; v_trop:units = "meters/second" ; v_trop:_FillValue = -9999.0f ; // To fill grid corners v_trop:navigation = "nav" ; // global attributes: :history = "created by gribtonc from HDS broadcast" ; :title = "NCEP Early Domestic Product Set" ; :Conventions = "NUWG" ; :version = 0.0 ; // still just a draft data: level = 1000, 900, 850, 700, 500, 400, 300, 250, 200, 150, 100 ; liso_bot = 1000 ; liso_top = 500 ; model_id = 39, 64 ; // Navigation nav_model = "GRIB1" ; grid_type_code = 0 ; grid_type = "Latitude/Longitude" ; grid_name = "US staggered grid" ; grid_center = 7 ; // NCEP grid_number = 50 ; i_dim = "lon" ; j_dim = "lat" ; Ni = 36 ; Nj = 33 ; La1 = 20.0 ; Lo1 = -140.0 ; La2 = 60.0 ; Lo2 = -52.5 ; Di = 2.5 ; Dj = 1.25 ; ResCompFlag = 136 ; lon = -140.0,-137.5,-135.0,-132.5,-130.0,-127.5,-125.0,-122.5,-120.0, -117.5,-115.0,-112.5,-110.0,-107.5,-105.0,-102.5,-100.0, -97.5, -95.0, -92.5, -90.0, -87.5, -85.0, -82.5, -80.0, -77.5, -75.0, -72.5, -70.0, -67.5, -65.0, -62.5, -60.0, -57.5, -55.0, -52.5 ; lat = 20.00, 21.25, 22.50, 23.75, 25.00, 26.25, 27.50, 28.75, 30.00, 31.25, 32.50, 33.75, 35.00, 36.25, 37.50, 38.75, 40.00, 41.25, 42.50, 43.75, 45.00, 46.25, 47.50, 48.75, 50.00, 51.25, 52.50, 53.75, 55.00, 56.25, 57.50, 58.75, 60.00 ; }