netcdf ruc { // RUC/MAPS model on Lambert conformal CONUS grid dimensions: record = UNLIMITED ; // (reference time, forecast time) level = 19 ; // isobaric levels bndry = 3 ; // boundary layer levels x = 93; y = 65; nav = 1; // For navigation. Variables that use // this dimension define a mapping between // (x,y) indices and (lat, lon) coords. rescompdim = 8 ; // for GDS resolution and component flags 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 :bndry = "bndry_bot, bndry_top"; // (bndry_bot, bndry_top) uniquely // determine bndry float P_frzlvl(record, y, x) ; P_frzlvl:long_name = "pressure at 0 isotherm" ; P_frzlvl:units = "Pa" ; P_frzlvl:valid_range = 0.f, 150000.f; P_frzlvl:_FillValue = -9999.f ; P_frzlvl:navigation = "nav" ; float P_maxwind(record, y, x) ; P_maxwind:long_name = "pressure at maximum wind" ; P_maxwind:units = "Pa" ; P_maxwind:valid_range = 0.f, 150000.f; P_maxwind:_FillValue = -9999.f ; P_maxwind:navigation = "nav" ; float P_trop(record, y, x) ; P_trop:long_name = "pressure at tropopause" ; P_trop:units = "Pa" ; P_trop:valid_range = 0.f, 100000.f; P_trop:_FillValue = -9999.f ; P_trop:navigation = "nav" ; float Pm_msl(record, y, x) ; Pm_msl:long_name = "pressure at mean sea level (MAPS reduction)" ; Pm_msl:units = "Pa" ; Pm_msl:valid_range = 0.f, 100000.f; Pm_msl:_FillValue = -9999.f ; Pm_msl:navigation = "nav" ; float Z_frzlvl(record, y, x) ; Z_frzlvl:long_name = "geopotential height at 0 isotherm" ; Z_frzlvl:units = "gp m" ; Z_frzlvl:valid_range = -1500.0f, 50000.0f; Z_frzlvl:_FillValue = -9999.f ; Z_frzlvl:navigation = "nav" ; float Z(record, level, y, x) ; Z:long_name = "geopotential height" ; Z:units = "gp m" ; Z:valid_range = -1500.0f, 50000.0f; Z:_FillValue = -9999.f ; Z:navigation = "nav" ; float T(record, level, y, x) ; T:long_name = "temperature" ; T:units = "degK" ; T:valid_range = 0.f, 400.f ; T:_FillValue = -9999.f ; T:navigation = "nav" ; float T_sfc2(record, y, x) ; T_sfc2:long_name = "temperature at 2m above ground" ; T_sfc2:units = "degK" ; T_sfc2:valid_range = 0.f, 400.f ; T_sfc2:_FillValue = -9999.f ; T_sfc2:navigation = "nav" ; float T_bndry(record, bndry, y, x) ; T_bndry:long_name = "temperature in boundary layer" ; T_bndry:units = "degK" ; T_bndry:valid_range = 0.f, 400.f ; T_bndry:_FillValue = -9999.f ; T_bndry:navigation = "nav" ; float theta_trop(record, y, x) ; theta_trop:long_name = "potential temperature at tropopause" ; theta_trop:units = "degK" ; theta_trop:valid_range = 0.f, 400.f; theta_trop:_FillValue = -9999.f ; theta_trop:navigation = "nav" ; float u(record, level, y, x) ; u:long_name = "u-component of wind" ; u:units = "meters/second" ; u:valid_range = -200.f, 200.f ; u:_FillValue = -9999.f ; u:navigation = "nav" ; float u_maxwind(record, y, x) ; u_maxwind:long_name = "u-component of wind at max wind" ; u_maxwind:units = "meters/second" ; u_maxwind:valid_range = -200.f, 200.f ; u_maxwind:_FillValue = -9999.f ; u_maxwind:navigation = "nav"; float u_trop(record, y, x) ; u_trop:long_name = "u-component of wind at tropopause" ; u_trop:units = "meters/second" ; u_trop:valid_range = -200.f, 200.f ; u_trop:_FillValue = -9999.f ; u_trop:navigation = "nav"; float u_sfc10(record, y, x) ; u_sfc10:long_name = "u-component of wind at 10m above ground" ; u_sfc10:units = "meters/second" ; u_sfc10:valid_range = -200.f, 200.f ; u_sfc10:_FillValue = -9999.f ; u_sfc10:navigation = "nav" ; float u_bndry(record, bndry, y, x) ; u_bndry:long_name = "u-component of wind in boundary layer" ; u_bndry:units = "meters/second" ; u_bndry:valid_range = -200.f, 200.f ; u_bndry:_FillValue = -9999.f ; u_bndry:navigation = "nav" ; float v(record, level, y, x) ; v:long_name = "v-component of wind" ; v:units = "meters/second" ; v:valid_range = -200.f, 200.f ; v:_FillValue = -9999.f ; v:navigation = "nav" ; float v_maxwind(record, y, x) ; v_maxwind:long_name = "v-component of wind at max wind" ; v_maxwind:units = "meters/second" ; v_maxwind:valid_range = -200.f, 200.f ; v_maxwind:_FillValue = -9999.f ; v_maxwind:navigation = "nav"; float v_trop(record, y, x) ; v_trop:long_name = "v-component of wind at tropopause" ; v_trop:units = "meters/second" ; v_trop:valid_range = -200.f, 200.f ; v_trop:_FillValue = -9999.f ; v_trop:navigation = "nav"; float v_sfc10(record, y, x) ; v_sfc10:long_name = "v-component of wind at 10m above ground" ; v_sfc10:units = "meters/second" ; v_sfc10:valid_range = -200.f, 200.f ; v_sfc10:_FillValue = -9999.f ; v_sfc10:navigation = "nav" ; float v_bndry(record, bndry, y, x) ; v_bndry:long_name = "v-component of wind in boundary layer" ; v_bndry:units = "meters/second" ; v_bndry:valid_range = -200.f, 200.f ; v_bndry:_FillValue = -9999.f ; v_bndry:navigation = "nav" ; float RH(record, level, y, x) ; RH:long_name = "relative humidity" ; RH:units = "percent" ; RH:valid_range = -10.f, 110.f ; RH:_FillValue = -9999.f ; RH:navigation = "nav" ; float RH_sfc2(record, y, x) ; RH_sfc2:long_name = "relative humidity at 2m above ground" ; RH_sfc2:units = "percent" ; RH_sfc2:valid_range = -10.f, 110.f ; RH_sfc2:_FillValue = -9999.f ; RH_sfc2:navigation = "nav" ; float precip_rt(record, y, x) ; precip_rt:long_name = "precipitation rate" ; precip_rt:units = "kg/m2/s" ; precip_rt:valid_range = -1.f, 100.f ; precip_rt:_FillValue = -9999.f ; precip_rt:navigation = "nav" ; float PRECIP(record, y, x) ; PRECIP:long_name = "total precipitation" ; PRECIP:units = "kg/m2" ; PRECIP:valid_range = -10.f, 1000.f ; PRECIP:_FillValue = -9999.f ; PRECIP:navigation = "nav" ; float precip_ls(record, y, x) ; precip_ls:long_name = "large scale precipitation" ; precip_ls:units = "kg/m2" ; precip_ls:valid_range = -10.f, 1000.f ; precip_ls:_FillValue = -9999.f ; precip_ls:navigation = "nav" ; float precip_cn(record, y, x) ; precip_cn:long_name = "convective precipitation" ; precip_cn:units = "kg/m2" ; precip_cn:valid_range = -10.f, 1000.f ; precip_cn:_FillValue = -9999.f ; precip_cn:navigation = "nav" ; // navigation variables all use nav dimension char nav_model(nav, nav_len) ; // navigation parameterization nav_model:long_name = "navigation model name"; 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" ; short grid_center(nav) ; grid_center:long_name = "GRIB-1 originating center ID" ; short 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" ; short Nx(nav) ; Nx:long_name = "number of points along x-axis" ; short 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, rescompdim) ; 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 = "km" ; float Dy(nav) ; Dy:long_name = "y-direction grid length" ; Dy:units = "km" ; 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 Dj(nav) ; Dj:long_name = "j grid increment" ; Dj:units = "degrees" ; // end of navigation variables float level(level) ; level:long_name = "level" ; level:units = "hectopascals" ; float bndry_bot(bndry) ; bndry_bot:long_name = "bottom level of boundary layer between 2 levels at specified pressure differences from ground to levels"; bndry_bot:units = "hectopascals"; float bndry_top(bndry) ; bndry_top:long_name = "top level of boundary layer between 2 levels at specified pressure differences from ground to levels"; bndry_top:units = "hectopascals"; long model_id ; model_id:long_name = "generating process ID number" ; model_id:units = "(allocated by center)" ; // global attributes: :history = "created by gribtonc from HRS broadcast" ; :title = "RUC/MAPS model, from Forecast Systems Lab" ; :Conventions = "NUWG" ; :version = 0.0 ; // still just a draft data: level = 1000, 950, 900, 850, 800, 750, 700, 650, 600, 550, 500, 450, 400, 350, 300, 250, 200, 150, 100; bndry_bot = 0, 60, 150; bndry_top = 30, 90, 180; // Navigation nav_model = "GRIB1" ; grid_type = "Lambert conformal" ; grid_name = "AWIPS grid 211: Regional CONUS" ; grid_number = 211 ; earth_shape = "oblate spheroid (IAU 1965)" ; x_dim = "x"; y_dim = "y"; Nx = 93; Ny = 65; La1 = 12.190; Lo1 = 226.541; ResCompFlag = 0,0,0,0,1,0,0,0; Lov = 265.0; Dx = 81.2705; Dy = 81.2705; ProjFlag = 0; Latin1 = 25.0; Latin2 = 25.0; }