netcdf eta { // ETA 80km model on Lambert conformal CONUS grid dimensions: record = UNLIMITED ; // (reference time, forecast time) level = 19 ; // isobaric levels for most parameters level_c = 5 ; // isobaric levels for absolute vorticity fhg = 2 ; // fixed height above ground levels lpdg = 5 ; // boundary layer levels lpdg_bndry = 1 ; // boundary layer lpdg_bndry30 = 1 ; // boundary layer 0-30 ls_sfc = 1 ; // surface layer lfhg = 1 ; // layer between 2 heights above ground x = 93 ; y = 65 ; datetime_len = 21 ; // string length for datetime strings nmodels = 2 ; // both 80km and 48km 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" ; float level_c(level_c) ; level_c:long_name = "level subset" ; level_c:units = "hectopascals" ; float fhg(fhg) ; // fixed height above ground fhg:long_name = "fixed height above ground" ; fhg:units = "meters" ; :lpdg = "lpdg_bot, lpdg_top" ; float lpdg_bot(lpdg) ; lpdg_bot:long_name = "bottom level of layer between 2 presure levels" ; lpdg_bot:units = "hPa" ; float lpdg_top(lpdg) ; lpdg_top:long_name = "top level of layer between 2 presure levels" ; lpdg_top:units = "hPa" ; :lpdg_bndry = "lpdg_bndry_bot, lpdg_bndry_top" ; float lpdg_bndry_bot(lpdg_bndry) ; lpdg_bndry_bot:long_name = "bottom level of boundary layer between 2 pressure levels" ; lpdg_bndry_bot:units = "hPa" ; float lpdg_bndry_top(lpdg_bndry) ; lpdg_bndry_top:long_name = "top level of boundary layer between 2 pressure levels" ; lpdg_bndry_top:units = "hPa" ; :lpdg_bndry30 = "lpdg_bndry30_bot, lpdg_bndry30_top" ; float lpdg_bndry30_bot(lpdg_bndry30) ; lpdg_bndry30_bot:long_name = "bottom level of boundary layer between 2 pressure levels" ; lpdg_bndry30_bot:units = "hPa" ; float lpdg_bndry30_top(lpdg_bndry30) ; lpdg_bndry30_top:long_name = "top level of boundary layer between 2 pressure levels" ; lpdg_bndry30_top:units = "hPa" ; :ls_sfc = "ls_sfc_bot, ls_sfc_top" ; float ls_sfc_bot(ls_sfc) ; ls_sfc_bot:long_name = "bottom level of surface layer between 2 sigma levels" ; ls_sfc_bot:units = "" ; // dimensionless float ls_sfc_top(ls_sfc) ; ls_sfc_top:long_name = "top level of surface layer between 2 sigma levels" ; ls_sfc_top:units = "" ; :lfhg = "lfhg_bot, lfhg_top" ; float lfhg_bot(lfhg) ; lfhg_bot:long_name = "bottom level of layer between 2 fixed heights above ground" ; lfhg_bot:units = "meters" ; float lfhg_top(lfhg) ; lfhg_top:long_name = "top level of layer between 2 fixed heights above ground" ; lfhg_top:units = "meters" ; int 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 number" ; char earth_shape(nav, nav_len) ; earth_shape:long_name = "assumed earth shape" ; char x_dim(nav, nav_len) ; x_dim:long_name = "x dimension name" ; char y_dim(nav, nav_len) ; y_dim:long_name = "y dimension name" ; int Nx(nav) ; Nx:long_name = "number of points along x-axis" ; int Ny(nav) ; Ny:long_name = "number of points along y-axis" ; 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" ; byte ResCompFlag(nav) ; ResCompFlag:long_name = "resolution and component flags" ; float Lov(nav) ; Lov:long_name = "orientation of the grid" ; Lov:units = "degrees_east" ; float Dx(nav) ; Dx:long_name = "x-direction grid length" ; Dx:units = "meters" ; float Dy(nav) ; Dy:long_name = "y-direction grid length" ; Dy:units = "meters" ; byte ProjFlag(nav) ; ProjFlag:long_name = "projection center flag" ; float Latin1(nav) ; Latin1:long_name = "first intersecting latitude" ; Latin1:units = "degrees_north" ; float Latin2(nav) ; Latin2:long_name = "second intersecting latitude" ; Latin2:units = "degrees_north" ; float SpLat(nav) ; SpLat:long_name = "latitude of the southern pole" ; SpLat:units = "degrees_north" ; float SpLon(nav) ; SpLon:long_name = "longitude of the southern pole" ; SpLon:units = "degrees_east" ; // end of navigation variables // global attributes: :history = "created by gribtonc from HDS broadcast" ; :title = "NCEP Global Product Set" ; :Conventions = "NUWG" ; :version = 0.0 ; // still just a draft float LI4_lpdg(record, lpdg_bndry, y, x) ; LI4_lpdg:long_name = "best (4 layer) lifted index" ; LI4_lpdg:units = "degK" ; LI4_lpdg:_FillValue = -9999.f ; LI4_lpdg:navigation = "nav" ; float pli_lpdg(record, lpdg_bndry30, y, x) ; pli_lpdg:long_name = "parcel lifted index(to 500 hPa)" ; pli_lpdg:units = "degK" ; pli_lpdg:_FillValue = -9999.f ; pli_lpdg:navigation = "nav" ; float PRECIP(record, y, x) ; PRECIP:long_name = "total precipitation over accumulation interval" ; PRECIP:units = "kg/m2" ; 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_sfc(record, y, x) ; P_sfc:long_name = "pressure at surface" ; P_sfc:units = "Pa" ; P_sfc:_FillValue = -9999.f ; P_sfc:navigation = "nav" ; float Psl_et(record, y, x) ; Psl_et:long_name = "mean sea level pressure (ETA model reduction)" ; Psl_et:units = "Pa" ; Psl_et:_FillValue = -9999.f ; Psl_et:navigation = "nav" ; float RH(record, level, y, x) ; RH:long_name = "relative humidity" ; RH:units = "percent" ; RH:_FillValue = -9999.f ; RH:navigation = "nav" ; float T(record, level, y, x) ; T:long_name = "temperature" ; T:units = "degK" ; T:_FillValue = -9999.f ; T:navigation = "nav" ; float Z(record, level, y, x) ; Z:long_name = "geopotential height" ; Z:units = "gp m" ; Z:_FillValue = -9999.f ; Z:navigation = "nav" ; float Z_sfc(y, x) ; Z_sfc:long_name = "terrain" ; Z_sfc:units = "gp m" ; Z_sfc:_FillValue = -9999.f ; Z_sfc:navigation = "nav" ; float omega(record, level, y, x) ; omega:long_name = "pressure vertical velocity" ; omega:units = "Pa/s" ; omega:_FillValue = -9999.f ; omega:navigation = "nav" ; float precip_cn(record, y, x) ; precip_cn:long_name = "convective precipitation over accumulation interval" ; precip_cn:units = "kg/m2" ; precip_cn:_FillValue = -9999.f ; precip_cn:navigation = "nav" ; float precip_cn_accum_times(record, accum) ; precip_cn_accum_times:long_name = "convective precipitation accumulation interval" ; precip_cn_accum_times:units = "hours" ; precip_cn_accum_times:_FillValue = -9999.f ; float u(record, level, y, x) ; u:long_name = "u-component of wind" ; u:units = "meters/second" ; u:_FillValue = -9999.f ; u:navigation = "nav" ; float v(record, level, y, x) ; v:long_name = "v-component of wind" ; v:units = "meters/second" ; v:_FillValue = -9999.f ; v:navigation = "nav" ; float absvor(record, level_c, y, x) ; absvor:long_name = "absolute vorticity" ; absvor:units = "1/s" ; absvor:_FillValue = -9999.f ; absvor:navigation = "nav" ; float pr_water_atm(record, y, x) ; // entire atmosphere as single layer pr_water_atm:long_name = "precipitable water" ; pr_water_atm:units = "kg/m2" ; pr_water_atm:_FillValue = -9999.f ; pr_water_atm:navigation = "nav" ; float u_fhg(record, fhg, y, x) ; u_fhg:long_name = "u-component of wind at fixed height above ground" ; u_fhg:units = "meters/second" ; u_fhg:_FillValue = -9999.f ; u_fhg:navigation = "nav" ; float v_fhg(record, fhg, y, x) ; v_fhg:long_name = "v-component of wind at fixed height above ground" ; v_fhg:units = "meters/second" ; v_fhg:_FillValue = -9999.f ; v_fhg:navigation = "nav" ; float RH_fhg(record, fhg, y, x) ; RH_fhg:long_name = "relative humidity at fixed height above ground" ; RH_fhg:units = "percent" ; RH_fhg:_FillValue = -9999.f ; RH_fhg:navigation = "nav" ; float T_fhg(record, fhg, y, x) ; T_fhg:long_name = "temperature at fixed height above ground" ; T_fhg:units = "degK" ; T_fhg:_FillValue = -9999.f ; T_fhg:navigation = "nav" ; float cin_sfc(record, y, x) ; cin_sfc:long_name = "surface convective inhibition" ; cin_sfc:units = "J/kg" ; cin_sfc:_FillValue = -9999.f ; cin_sfc:navigation = "nav" ; float cape_sfc(record, y, x) ; cape_sfc:long_name = "surface convective available potential energy" ; cape_sfc:units = "J/kg" ; cape_sfc:_FillValue = -9999.f ; cape_sfc:navigation = "nav" ; float cin_lpdg(record, lpdg_bndry, y, x) ; cin_lpdg:long_name = "boundary convective inhibition" ; cin_lpdg:units = "J/kg" ; cin_lpdg:_FillValue = -9999.f ; cin_lpdg:navigation = "nav" ; float cape_lpdg(record, lpdg_bndry, y, x) ; cape_lpdg:long_name = "boundary convective available potential energy" ; cape_lpdg:units = "J/kg" ; cape_lpdg:_FillValue = -9999.f ; cape_lpdg:navigation = "nav" ; float helc_lfhg(record, lfhg, y, x) ; helc_lfhg:long_name = "helicity" ; helc_lfhg:units = "meters2/seconds2" ; helc_lfhg:_FillValue = -9999.f ; helc_lfhg:navigation = "nav" ; float RH_lpdg(record, lpdg, y, x) ; RH_lpdg:long_name = "relative humidity in boundary layer" ; RH_lpdg:units = "percent" ; RH_lpdg:_FillValue = -9999.f ; RH_lpdg:navigation = "nav" ; float u_lpdg(record, lpdg, y, x) ; u_lpdg:long_name = "u-component of wind in boundary layer" ; u_lpdg:units = "meters/second" ; u_lpdg:_FillValue = -9999.f ; u_lpdg:navigation = "nav" ; float v_lpdg(record, lpdg, y, x) ; v_lpdg:long_name = "v-component of wind in boundary layer" ; v_lpdg:units = "meters/second" ; v_lpdg:_FillValue = -9999.f ; v_lpdg:navigation = "nav" ; float T_lpdg(record, lpdg, y, x) ; T_lpdg:long_name = "temperature in boundary layer" ; T_lpdg:units = "degK" ; T_lpdg:_FillValue = -9999.f ; T_lpdg:navigation = "nav" ; data: level = 1000, 950, 900, 850, 800, 750, 700, 650, 600, 550, 500, 450, 400, 350, 300, 250, 200, 150, 100 ; level_c = 1000, 850, 700, 500, 250 ; fhg = 2, 10 ; lpdg_top = 30, 60, 90, 120, 150 ; lpdg_bot = 0, 30, 60, 90, 120 ; lpdg_bndry_top = 180 ; lpdg_bndry_bot = 0 ; lpdg_bndry30_top = 30 ; lpdg_bndry30_bot = 0 ; ls_sfc_top = .97 ; ls_sfc_bot = .99 ; lfhg_top = 3000 ; lfhg_bot = 0 ; model_id = 83, 89 ; // Navigation nav_model = "GRIB1" ; grid_type_code = 3 ; grid_type = "Lambert conformal" ; grid_name = "AWIPS grid 211: Regional CONUS" ; grid_center = 7 ; grid_number = 211 ; earth_shape = "oblate spheroid (IAU 1965)" ; x_dim = "x" ; y_dim = "y" ; Nx = 93 ; Ny = 65 ; La1 = 12.190 ; Lo1 = -133.459 ; ResCompFlag = 8 ; Lov = -95.0 ; Dx = 81271 ; Dy = 81271 ; ProjFlag = 0 ; Latin1 = 25.0 ; Latin2 = 25.0 ; SpLat = 0.0 ; SpLon = 0.0 ; }