netcdf now { // Global Wind-Wave Forecast Model // on international exchange grids 21, 22, 23, 24 dimensions: record = UNLIMITED ; // (reference time, forecast time) lat = 73 ; // latitude lon = 73 ; // longitude nav = 1; // For navigation. Variables that use // this dimension define a mapping between // (lat, lon) indices and (lat, lon) coords. nav_len = 100 ; ngrids = 4 ; // number of subgrids stitched together 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 long model_id ; model_id:long_name = "model ID" ; model_id:units = "(allocated by center)" ; // 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"; // global attributes: :history = "created by gribtonc from HDS broadcast" ; :title = "NMC Global Product Set" ; :Conventions = "NUWG" ; :version = 0.0 ; // still just a draft // 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, ngrids) ; grid_number:long_name = "GRIB-1 catalogued grid number" ; grid_number:_FillValue = -9999 ; char i_dim(nav, nav_len) ; i_dim:long_name = "latitude dimension name" ; char j_dim(nav, nav_len) ; j_dim:long_name = "longitude 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 u_sfc(record, lat, lon) ; u_sfc:long_name = "u-component of wind at surface" ; u_sfc:units = "m/s" ; u_sfc:_FillValue = -9999.f ; u_sfc:navigation = "nav"; float v_sfc(record, lat, lon) ; v_sfc:long_name = "v-component of wind at surface" ; v_sfc:units = "m/s" ; v_sfc:_FillValue = -9999.f ; v_sfc:navigation = "nav"; data: model_id = 10 ; // Navigation nav_model = "GRIB1" ; grid_type_code = 0 ; grid_type = "Latitude/Longitude" ; grid_name = "Global 5.0 x 2.5 degree grid" ; grid_center = 7 ; // NMC grid_number = 21,22,23,24 ; i_dim = "lat"; j_dim = "lon"; Ni = 73; Nj = 73; La1 = -90.0; Lo1 = -180.0; La2 = 90.0; Lo2 = 180.0; Di = 5.0; Dj = 2.5; ResCompFlag = '\x80'; }