[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: FW: re FW: NOGAPS GRIB data decoder
- Subject: Re: FW: re FW: NOGAPS GRIB data decoder
- Date: Fri, 10 May 2002 15:32:19 -0600 (MDT)
Wendy,
Here's the first pass at a nogaps cdl file. The NOGAPS model contains more
variables then the P_msl variable. To comment out the unwanted vars, put a
"//" in front of the var and the attributes. I attached the cdl file,
next week I plan on putting out a decoders release.
Robb...
On Wed, 1 May 2002, FSU COAPS Unidata LDM wrote:
> Thank you all for the help. In my understanding, with a proper CDL file
> for the disired netCDF format, the regular "gribtonc" should be able to
> convert the NOGAPS GRIB (MSL pressure) data to the netCDF format we need.
> Robb Kambic (address@hidden) promised he would try to
> make one, but not done yet.
>
> --
> Wendy Shi
> Senior Computer Programmer-Analyst
> Center for Ocean-Atmospheric Prediction Studies (COAPS)
> Florida State University, Tallahassee, FL 32306
> http://www.coaps.fsu.edu
>
> On Tue, 30 Apr 2002, Jones, LT Carla wrote:
>
> > Previously had incorrect email address.
> >
> > -----Original Message-----
> > From: Jones, LT Carla
> > Sent: Tuesday, April 30, 2002 1:12 PM
> > To: Sharfstein, Phil; 'address@hidden'
> > Cc: Huff, Dave; Dimitriou, David; Panek, Charles
> > Subject: FW: re FW: NOGAPS GRIB data decoder
> >
> >
> >
> >
> > -----Original Message-----
> > From: Williams, Anthony
> > Sent: Tuesday, April 30, 2002 11:30 AM
> > To: Jones, LT Carla
> > Subject: RE: re FW: NOGAPS GRIB data decoder
> >
> >
> > LT Jones, could you forward this e-mail to Phil Sharfstein and
> > 'address@hidden', cc to Dave Dimitriou, Jim Dykes, Dave Huff, and
> > Czec Panek? Thanks, Tony.
> >
> >
> >
> > Phil, we probably owe Wendy Shi an apology. The "GRIB->netCDF converters"
> > you and Wendy are talking about probably are not the same things as the
> > "current grb2nc, nc2grb, grib, netCDF, and locnet packages" that SOARS
> > project participants are using. From our conversation this morning, I
> > understand that you know the former to be COARDS compliant. Unless by
> > remarkable coincidence, the latter are not. As mentioned below, the
> > first-pass "GIEF-F" format was worked out among myself, Eric Davies at
> > Barrodale Computing Services, and Oleg Kiselyov at NPS, based in part on the
> > code from Jim Dykes, for the purpose of loading FNMOC (and certain other
> > originating center) GriB files into Barrodale's DataBlade, then passing them
> > to XiS for the 3rd Fleet Battle Lab.
> >
> > You certainly are welcome to post our material on the USGODAE FTP site,
> > after the GIEF-F Version 1.0 Standard has been proved to work and the
> > resulting code has been loaded into Czec's CM area. I strongly recommend
> > that you do not do this unless you can post a very clear disclaimer, to the
> > effect that this special-purpose standard has no obligation to conform to
> > anything other than SOARS project needs, and that it is evolving rapidly.
> > After Mayday, the GIEF-F-1.0 netCDF files will not be legible to our
> > previous software, and we look forward to further divergences in pursuit of
> > compatibility with JMV, MetCast, and WxMap.
> >
> > -----Original Message-----
> > From: Phil Sharfstein [mailto:address@hidden]
> > Sent: Monday, April 29, 2002 4:07 PM
> >
> > To: Williams, Anthony
> > Cc: Dimitriou, David; Dykes, James; Huff, Dave; Panek, Charles
> > Subject: Re: re FW: NOGAPS GRIB data decoder
> >
> >
> > Tony,
> > I have another request for GRIB->NetCDF converters. Since this will
> > probably be a common request from USGODAE server users, I would like to
> > place your release (or most current) version on the USGODAE FTP site.
> > Please keep me updated as to the status & readiness for distribution of
> > the code.
> >
> > Thanks,
> >
> > -Phil
> >
> > --
> > Phil Sharfstein
> > GODAE Project Manager
> > Fleet Numerical Meteorology and Oceanography Center
> > 7 Grace Hopper Ave, Stop 1.
> > Monterey, CA 93943
> > 831.656.4525
> > address@hidden
> >
> > On Wed, 2002-04-24 at 11:36, Williams, Anthony wrote:
> > > Dave, as you requested, Wendy Shi at FSU by now should have a complete
> > copy
> > > of all the current grb2nc, nc2grb, grib, netCDF, and locnet packages, with
> > > notes and test cases, reflecting the current FNMOC version of the original
> > > Jim Dykes NAVO software. These constitute the first-pass "GIEF-F" format
> > > worked out among myself, Eric Davies at Barrodale Computing Services, and
> > > Oleg Kiselyov at NPS. Although proved to work without loss for ten dozen
> > or
> > > so of Czec Panek's well-chosen operational GriB files, we want to change
> > > everything, and so we are still working on the definitive Version 1.0 list
> > > of Attributes for that format, second draft.
> > >
> > > If no showstoppers appear, that Version takes effect on Mayday, at which
> > > time we will place everything under Configuration Management. Since Czec
> > is
> > > the GriB Domain Manager, I shall ask him to provide a "parking area" in
> > his
> > > CM directory for these files.
> > >
> > > Thanks, Tony.
> >
> >
>
>
===============================================================================
Robb Kambic Unidata Program Center
Software Engineer III Univ. Corp for Atmospheric Research
address@hidden WWW: http://www.unidata.ucar.edu/
===============================================================================
netcdf nogaps { // 126 Wave, 18 Layer Spectral Model Aviation Run
// on expanded quasi-regular "thinned" grids
dimensions:
record = UNLIMITED ; // (reference time, forecast time)
level = 26 ;
lat = 181 ; // latitude
lon = 360 ; // longitude
lpdg = 2 ; // boundary layer levels
fhg = 2 ; // fixed height above ground levels
fh = 3 ; // fixed height above ground levels
soil_lpdg = 6 ; // soil boundary layer levels
ls_all = 7 ; // whole atmosphere layer
sigma = 1 ; // sigma level
datetime_len = 21 ; // string length for datetime strings
nmodels = 3 ; // both AVN and SSIAVN models
accum = 2 ; // time range for accumulations
nav = 1 ; // For navigation. Variables that use
// this dimension define a mapping between
// (lat, lon) indices and (lat, lon) coords.
nav_len = 100 ; // max string length for navigation 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" ;
// (soil_lpdg_bot, soil_lpdg_top) uniquely determines soil_lpdg
float soil_lpdg_bot(soil_lpdg) ;
soil_lpdg_bot:long_name = "bottom level of boundary layer
between 2 levels from ground to levels" ;
//soil_lpdg_bot:units = "centimeters" ;
float soil_lpdg_top(soil_lpdg) ;
soil_lpdg_top:long_name = "top level of boundary layer between
2 levels from ground to levels" ;
//soil_lpdg_top:units = "centimeters" ;
:lpdg = "lpdg_bot, lpdg_top" ; // (lpdg_bot, lpdg_top) uniquely
// determines lpdg
float lpdg_bot(lpdg) ;
lpdg_bot:long_name = "bottom level of boundary layer between 2
levels at specified pressure differences from ground to levels" ;
lpdg_bot:units = "hectopascals" ;
float lpdg_top(lpdg) ;
lpdg_top:long_name = "top level of boundary layer between 2
levels at specified pressure differences from ground to levels" ;
lpdg_top:units = "hectopascals" ;
float fhg(fhg) ; // fixed height above ground
fhg:long_name = "fixed height above ground" ;
fhg:units = "meters" ;
float fh(fh) ; // fixed height above ground
fh:long_name = "fixed height above ground" ;
fh:units = "meters" ;
:ls_all = "ls_all_bot, ls_all_top" ;
float ls_all_bot(ls_all) ;
ls_all_bot:long_name = "bottom level of atmosphere between 2
sigma levels" ;
ls_all_bot:units = "" ;
float ls_all_top(ls_all) ;
ls_all_top:long_name = "top level of atmosphere between 2 sigma
levels" ;
ls_all_top:units = "" ;
float sigma(sigma) ; // fixed height above ground
sigma:long_name = "sigma level" ;
sigma:units = "" ; // dimensionless
long model_id(nmodels) ;
model_id:long_name = "generating process ID number" ;
// 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" ;
// 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 P(record, lat, lon) ;
//P:long_name = "pressure" ;
//P:units = "Pa" ;
//P:_FillValue = -9999.f ;
//P:navigation = "nav" ;
float P_maxwind(record, lat, lon) ;
P_maxwind:long_name = "pressure at maximum wind" ;
P_maxwind:units = "Pa" ;
P_maxwind:_FillValue = -9999.f ;
P_maxwind: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 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 P_sfc(record, lat, lon) ;
P_sfc:long_name = "pressure at surface" ;
P_sfc:units = "Pa" ;
P_sfc:_FillValue = -9999.f ;
P_sfc: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_TD(record, level, lat, lon) ;
T_TD:long_name = "Dew point depression" ;
T_TD:units = "degK" ;
T_TD:_FillValue = -9999.f ;
T_TD:navigation = "nav" ;
float T_TD_sfc(record, lat, lon) ;
T_TD_sfc:long_name = "Dew point depression" ;
T_TD_sfc:units = "degK" ;
T_TD_sfc:_FillValue = -9999.f ;
T_TD_sfc: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 T_maxwind(record, lat, lon) ;
T_maxwind:long_name = "temperature at maxwind" ;
T_maxwind:units = "degK" ;
T_maxwind:_FillValue = -9999.f ;
T_maxwind: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 T_sigma(record, sigma, lat, lon) ;
//T_sigma:long_name = "temperature" ;
//T_sigma:units = "degK" ;
//T_sigma:_FillValue = -9999.f ;
//T_sigma:navigation = "nav" ;
//float RH_sigma(record, sigma, lat, lon) ;
//RH_sigma:long_name = "relative humidity at sigma level" ;
//RH_sigma:units = "percent" ;
//RH_sigma:_FillValue = -9999.f ;
//RH_sigma:navigation = "nav" ;
//float u_sigma(record, sigma, lat, lon ) ;
//u_sigma:long_name = "u-component of wind" ;
//u_sigma:units = "m/s" ;
//u_sigma:_FillValue = -9999.f ;
//u_sigma:navigation = "nav" ;
//float v_sigma(record, sigma, lat, lon ) ;
//v_sigma:long_name = "v-component of wind" ;
//v_sigma:units = "m/s" ;
//v_sigma:_FillValue = -9999.f ;
//v_sigma:navigation = "nav" ;
//float theta_sigma(record, sigma, lat, lon) ;
//theta_sigma:long_name = "Potential temperature" ;
//theta_sigma:units = "degK" ;
//theta_sigma:_FillValue = -9999.f ;
//theta_sigma:navigation = "nav" ;
//float omega_sigma(record, sigma, lat, lon) ;
//omega_sigma:long_name = "pressure vertical velocity" ;
//omega_sigma:units = "Pa/s" ;
//omega_sigma:_FillValue = -9999.f ;
//omega_sigma:navigation = "nav" ; // georeference info
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 Z_maxwind(record, lat, lon) ;
Z_maxwind:long_name = "geopotential height at maxwind" ;
Z_maxwind:units = "gp m" ;
Z_maxwind:_FillValue = -9999.f ;
Z_maxwind:navigation = "nav" ;
//float Z_trop(record, lat, lon) ;
//Z_trop:long_name = "geopotential height at tropopause" ;
//Z_trop:units = "gp m" ;
//Z_trop:_FillValue = -9999.f ;
//Z_trop:navigation = "nav" ;
//float T_lpdg(record, lpdg, lat, lon) ;
//T_lpdg:long_name = "temperature in boundary layer" ;
//T_lpdg:units = "degK" ;
//T_lpdg:_FillValue = -9999.f ;
//T_lpdg:navigation = "nav" ;
//float RH_lpdg(record, lpdg, lat, lon) ;
//RH_lpdg:long_name = "relative humidity in boundary layer" ;
//RH_lpdg:units = "percent" ;
//RH_lpdg:_FillValue = -9999.f ;
//RH_lpdg:navigation = "nav" ;
//float cin_lpdg(record, lpdg, lat, lon ) ;
//cin_lpdg:long_name = "boundary convective inhibition" ;
//cin_lpdg:units = "J/kg" ;
//cin_lpdg:_FillValue = -9999.f ;
//cin_lpdg:navigation = "nav" ;
//float spec_hum_lpdg(record, lpdg, lat, lon ) ;
//spec_hum_lpdg:long_name = "specific humidity" ;
//spec_hum_lpdg:units = "kg/kg" ;
//spec_hum_lpdg:_FillValue = -9999.f ;
//spec_hum_lpdg:navigation = "nav" ;
//float cape_lpdg(record, lpdg, lat, lon ) ;
//cape_lpdg:long_name = "boundary convective available
potential energy" ;
//cape_lpdg:units = "J/kg" ;
//cape_lpdg:_FillValue = -9999.f ;
//cape_lpdg:navigation = "nav" ;
//float u_lpdg(record, lpdg, lat, lon) ;
//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, lat, lon) ;
//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 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_maxwind(record, lat, lon) ;
u_maxwind:long_name = "u-component of wind at max wind" ;
u_maxwind:units = "meters/second" ;
u_maxwind:_FillValue = -9999.f ;
u_maxwind:navigation = "nav" ;
//float u_trop(record, lat, lon) ;
//u_trop:long_name = "u-component of wind at tropopause" ;
//u_trop:units = "meters/second" ;
//u_trop:_FillValue = -9999.f ;
//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_maxwind(record, lat, lon) ;
v_maxwind:long_name = "v-component of wind at max wind" ;
v_maxwind:units = "meters/second" ;
v_maxwind:_FillValue = -9999.f ;
v_maxwind:navigation = "nav" ;
//float v_trop(record, lat, lon) ;
//v_trop:long_name = "v-component of wind at tropopause" ;
//v_trop:units = "meters/second" ;
//v_trop:_FillValue = -9999.f ;
//v_trop:navigation = "nav" ;
float SPD_fhg(record, fhg, lat, lon) ;
SPD_fhg:long_name = "wind speed at fixed height above ground" ;
SPD_fhg:units = "meters/second" ;
SPD_fhg:_FillValue = -9999.f ;
SPD_fhg:navigation = "nav" ;
float u_fhg(record, fhg, lat, lon) ;
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, lat, lon) ;
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, lat, lon) ;
//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 spec_hum_fhg(record, fhg, lat, lon) ;
//spec_hum_fhg:long_name = "specific humidity at fixed height
above ground" ;
//spec_hum_fhg:units = "kg/kg" ;
//spec_hum_fhg:_FillValue = -9999.f ;
//spec_hum_fhg:navigation = "nav" ;
//float T_fhg(record, fhg, lat, lon) ;
//T_fhg:long_name = "temperature at fixed height above ground" ;
//T_fhg:units = "degK" ;
//T_fhg:_FillValue = -9999.f ;
//T_fhg:navigation = "nav" ;
//float Tmax_fhg(record, fhg, lat, lon) ;
//Tmax_fhg:long_name = " maximum temperature at fixed height
above ground" ;
//Tmax_fhg:units = "degK" ;
//Tmax_fhg:_FillValue = -9999.f ;
//Tmax_fhg:navigation = "nav" ;
//float Tmin_fhg(record, fhg, lat, lon) ;
//Tmin_fhg:long_name = " minimum temperature at fixed height
above ground" ;
//Tmin_fhg:units = "degK" ;
//Tmin_fhg:_FillValue = -9999.f ;
//Tmin_fhg:navigation = "nav" ;
//float u_fh(record, fh, lat, lon) ;
//u_fh:long_name = "u-component of wind at fixed height above
ground" ;
//u_fh:units = "meters/second" ;
//u_fh:_FillValue = -9999.f ;
//u_fh:navigation = "nav" ;
//float v_fh(record, fh, lat, lon) ;
//v_fh:long_name = "v-component of wind at fixed height above
ground" ;
//v_fh:units = "meters/second" ;
//v_fh:_FillValue = -9999.f ;
//v_fh:navigation = "nav" ;
//float RH_fh(record, fh, lat, lon) ;
//RH_fh:long_name = "relative humidity at fixed height above
ground" ;
//RH_fh:units = "percent" ;
//RH_fh:_FillValue = -9999.f ;
//RH_fh:navigation = "nav" ;
//float T_fh(record, fh, lat, lon) ;
//T_fh:long_name = "temperature at fixed height above ground" ;
//T_fh:units = "degK" ;
//T_fh:_FillValue = -9999.f ;
//T_fh:navigation = "nav" ;
//float RH_ls(record, ls_all, lat, lon) ;
//RH_ls:long_name = "relative humidity" ;
//RH_ls:units = "percent" ;
//RH_ls:_FillValue = -9999.f ;
//RH_ls:navigation = "nav" ;
float PRECIP(record, lat, lon) ;
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 precip_cn(record, lat, lon) ;
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 preix(record, lat, lon ) ;
preix:long_name = "precipitation index" ;
preix:units = "" ;
preix:_FillValue = -9999.f ;
preix:navigation = "nav" ;
//float watr(record, lat, lon ) ;
//watr:long_name = "water runoff" ;
//watr:units = "kg/m2" ;
//watr:_FillValue = -9999.f ;
//watr:navigation = "nav" ;
//float pr_water_atm(record, lat, lon ) ; // 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 cprat(record, lat, lon) ;
//cprat:long_name = "Convective precipitation rate" ;
//cprat:units = "kg/m2/sec" ;
//cprat:_FillValue = -9999.f ;
//cprat:navigation = "nav" ;
//float crain(record, lat, lon ) ;
//crain:long_name = "Categorical rain" ;
//crain:_FillValue = -9999.f ;
//crain:navigation = "nav" ;
//float cfrzrn(record, lat, lon ) ;
//cfrzrn:long_name = "Categorical freezing rain" ;
//cfrzrn:_FillValue = -9999.f ;
//cfrzrn:navigation = "nav" ;
float snow(record, lat, lon ) ;
snow:long_name = "snow dept" ;
snow:_FillValue = -9999.f ;
snow:navigation = "nav" ;
float ice_conc(record, lat, lon ) ;
ice_conc:long_name = "Ice concentration" ;
ice_conc:_FillValue = -9999.f ;
ice_conc:navigation = "nav" ;
//float LI(record, lat, lon ) ;
//LI:long_name = "lifted index" ;
//LI:units = "degK" ;
//LI:_FillValue = -9999.f ; // To fill grid corners
//LI:navigation = "nav" ;
//float T_sfc(record, lat, lon) ;
//T_sfc:long_name = "surface temperature" ;
//T_sfc:units = "degK" ;
//T_sfc:_FillValue = -9999.f ;
//T_sfc:navigation = "nav" ;
//float Z_sfc(record, lat, lon) ;
//Z_sfc:long_name = "terrain" ;
//Z_sfc:units = "gp m" ;
//Z_sfc:_FillValue = -9999.f ;
//Z_sfc:navigation = "nav" ;
float sen_ht_sfc(record, lat, lon ) ;
sen_ht_sfc:long_name = "Sensible heat net flux" ;
sen_ht_sfc:units = "W / m2" ;
sen_ht_sfc:_FillValue = -9999.f ;
sen_ht_sfc:navigation = "nav" ;
//float cin_sfc(record, lat, lon ) ;
//cin_sfc:long_name = "surface convective inhibition" ;
//cin_sfc:units = "J/kg" ;
//cin_sfc:_FillValue = -9999.f ;
//cin_sfc:navigation = "nav" ;
float rdn_swsrf_sfc(record, lat, lon ) ;
rdn_swsrf_sfc:long_name = "net short wave rad. surface" ;
rdn_swsrf_sfc:units = "W/m2" ;
rdn_swsrf_sfc:_FillValue = -9999.f ;
rdn_swsrf_sfc:navigation = "nav" ;
//float dswrf_sfc(record, lat, lon ) ;
//dswrf_sfc:long_name = "Downward short wave rad. flux" ;
//dswrf_sfc:units = "W/m2" ;
//dswrf_sfc:_FillValue = -9999.f ;
//dswrf_sfc:navigation = "nav" ;
//float ulwrf_sfc(record, lat, lon ) ;
//ulwrf_sfc:long_name = "Upward long wave rad. flux" ;
//ulwrf_sfc:units = "W / m2" ;
//ulwrf_sfc:_FillValue = -9999.f ;
//ulwrf_sfc:navigation = "nav" ;
//float dlwrf_sfc(record, lat, lon ) ;
//dlwrf_sfc:long_name = "Downward long wave rad. flux" ;
//dlwrf_sfc:units = "W / m2" ;
//dlwrf_sfc:_FillValue = -9999.f ;
//dlwrf_sfc:navigation = "nav" ;
//float land_mask_sfc(record, lat, lon ) ;
//land_mask_sfc:long_name = "Land-Sea mask" ;
//land_mask_sfc:units = "bit" ;
//land_mask_sfc:_FillValue = -9999.f ;
//land_mask_sfc:navigation = "nav" ;
//float albedo_sfc(record, lat, lon ) ;
//albedo_sfc:long_name = "Albedo" ;
//albedo_sfc:_FillValue = -9999.f ;
//albedo_sfc:navigation = "nav" ;
// Latent heat net flux
float lat_ht_sfc(record, lat, lon ) ;
lat_ht_sfc:long_name = "Latent heat net flux" ;
lat_ht_sfc:units = "W / m2" ;
lat_ht_sfc:_FillValue = -9999.f ;
lat_ht_sfc:navigation = "nav" ;
//float LI4_sfc(record, lat, lon ) ;
//LI4_sfc:long_name = "Best 4 layer lift index" ;
//LI4_sfc:units = "K" ;
//LI4_sfc:_FillValue = -9999.f ;
//LI4_sfc:navigation = "nav" ;
//float cape_sfc(record, lat, lon ) ;
//cape_sfc:long_name = "surface convective available potential
energy" ;
//cape_sfc:units = "J/kg" ;
//cape_sfc:_FillValue = -9999.f ;
//cape_sfc:navigation = "nav" ;
float u_flx_sfc(record, lat, lon ) ;
u_flx_sfc:long_name = "Momentum flux, u componet" ;
u_flx_sfc:units = "N/m2" ;
u_flx_sfc:_FillValue = -9999.f ;
u_flx_sfc:navigation = "nav" ;
float v_flx_sfc(record, lat, lon ) ;
v_flx_sfc:long_name = "Momentum flux, v componet" ;
v_flx_sfc:units = "N/m2" ;
v_flx_sfc:_FillValue = -9999.f ;
v_flx_sfc:navigation = "nav" ;
// Planetary boundary layer height
float hpbl_sfc(record) ;
hpbl_sfc:long_name = "Planetary boundary layer height" ;
hpbl_sfc:units = "m" ;
hpbl_sfc:_FillValue = -9999.f ;
hpbl_sfc:navigation = "nav" ;
//float RH_atm(record, lat, lon) ;
//RH_atm:long_name = "relative humidity entire atmosphere" ;
//RH_atm:units = "percent" ;
//RH_atm:_FillValue = -9999.f ;
//RH_atm:navigation = "nav" ;
//float totoz_atm(record, lat, lon) ;
//totoz_atm:long_name = "Total ozone entire atmosphere" ;
//totoz_atm:units = "Dobson" ;
//totoz_atm:_FillValue = -9999.f ;
//totoz_atm:navigation = "nav" ;
//float RH_frzlvl(record, lat, lon ) ;
//RH_frzlvl:long_name = "relative humidity at 0 degree
isotherm" ;
//RH_frzlvl:units = "percent" ;
//RH_frzlvl:_FillValue = -9999.f ;
//RH_frzlvl:navigation = "nav" ;
//float Z_frzlvl(record, lat, lon ) ;
//Z_frzlvl:long_name = "geopotential height at 0 isotherm" ;
//Z_frzlvl:units = "gp m" ;
//Z_frzlvl:_FillValue = -9999.f ;
//Z_frzlvl:navigation = "nav" ;
//float T_hctl(record, lat, lon) ;
//T_hctl:long_name = "temperature at high cloud top level" ;
//T_hctl:units = "degK" ;
//T_hctl:_FillValue = -9999.f ;
//T_hctl:navigation = "nav" ;
//float P_hctl(record, lat, lon) ;
//P_hctl:long_name = "Pressure at high cloud top level" ;
//P_hctl:units = "Pa" ;
//P_hctl:_FillValue = -9999.f ;
//P_hctl:navigation = "nav" ;
//float T_mctl(record, lat, lon) ;
//T_mctl:long_name = "temperature at middle cloud top level" ;
//T_mctl:units = "degK" ;
//T_mctl:_FillValue = -9999.f ;
//T_mctl:navigation = "nav" ;
//float P_mctl(record, lat, lon) ;
//P_mctl:long_name = "Pressure at middle cloud top level" ;
//P_mctl:units = "Pa" ;
//P_mctl:_FillValue = -9999.f ;
//P_mctl:navigation = "nav" ;
//float T_lctl(record, lat, lon) ;
//T_lctl:long_name = "temperature at low cloud top level" ;
//T_lctl:units = "degK" ;
//T_lctl:_FillValue = -9999.f ;
//T_lctl:navigation = "nav" ;
//float P_lctl(record, lat, lon) ;
//P_lctl:long_name = "Pressure at low cloud top level" ;
//P_lctl:units = "Pa" ;
//P_lctl:_FillValue = -9999.f ;
//P_lctl:navigation = "nav" ;
//float P_mcbl(record, lat, lon) ;
//P_mcbl:long_name = "Pressure at middle cloud bottom level" ;
//P_mcbl:units = "Pa" ;
//P_mcbl:_FillValue = -9999.f ;
//P_mcbl:navigation = "nav" ;
//float P_cctl(record, lat, lon) ;
//P_cctl:long_name = "Pressure at convective cloud top layer" ;
//P_cctl:units = "Pa" ;
//P_cctl:_FillValue = -9999.f ;
//P_cctl:navigation = "nav" ;
//float P_ccbl(record, lat, lon) ;
//P_ccbl:long_name = "Pressure at convective cloud bottom
layer" ;
//P_ccbl:units = "Pa" ;
//P_ccbl:_FillValue = -9999.f ;
//P_ccbl:navigation = "nav" ;
//float uswrf_topa(record, lat, lon) ;
//uswrf_topa:long_name = "Upward short wave rad.flux" ;
//uswrf_topa:units = "W / m2" ;
//uswrf_topa:_FillValue = -9999.f ;
//uswrf_topa:navigation = "nav" ;
//float ulwrf_topa(record, lat, lon) ;
//ulwrf_topa:long_name = "Upward long wave rad.flux" ;
//ulwrf_topa:units = "W / m2" ;
//ulwrf_topa:_FillValue = -9999.f ;
//ulwrf_topa:navigation = "nav" ;
//float N(record, lat, lon) ;
//N:long_name = "Total cloud cover" ;
//N:units = "percent" ;
//N:_FillValue = -9999.f ;
//N:navigation = "nav" ;
//float N_hcy(record, lat, lon) ;
//N_hcy:long_name = "Total cloud cover, high cloud layer" ;
//N_hcy:_FillValue = -9999.f ;
//N_hcy:navigation = "nav" ;
//float N_mcy(record, lat, lon) ;
//N_mcy:long_name = "Total cloud cover, middle cloud layer" ;
//N_mcy:_FillValue = -9999.f ;
//N_mcy:navigation = "nav" ;
//float N_lcy(record, lat, lon) ;
//N_lcy:long_name = "Total cloud cover, low cloud layer" ;
//N_lcy:_FillValue = -9999.f ;
//N_lcy:navigation = "nav" ;
//float N_bcy(record, lat, lon) ;
//N_bcy:long_name = "Total cloud cover, boundary layer cloud
layer" ;
//N_bcy:_FillValue = -9999.f ;
//N_bcy:navigation = "nav" ;
//float N_ccy(record, lat, lon) ;
//N_ccy:long_name = "Total cloud cover, covective cloud layer" ;
//N_ccy:_FillValue = -9999.f ;
//N_ccy:navigation = "nav" ;
//float N_atm(record, lat, lon) ;
//N_atm:long_name = "Total cloud cover entire atmosphere" ;
//N_atm:_FillValue = -9999.f ;
//N_atm:navigation = "nav" ;
//float P_hcbl(record, lat, lon) ;
//P_hcbl:long_name = "Pressure, high cloud bottom level" ;
//P_hcbl:units = "Pa" ;
//P_hcbl:_FillValue = -9999.f ;
//P_hcbl:navigation = "nav" ;
//float P_lcbl(record, lat, lon) ;
//P_lcbl:long_name = "Pressure, low cloud bottom level" ;
//P_lcbl:units = "Pa" ;
//P_lcbl:_FillValue = -9999.f ;
//P_lcbl:navigation = "nav" ;
float omega(record, level, lat, lon) ;
omega:long_name = "pressure vertical velocity" ;
omega:units = "Pa/s" ;
omega:_FillValue = -9999.f ;
omega:navigation = "nav" ; // georeference info
float absvor(record, level, lat, lon) ;
absvor:long_name = "absolute vorticity" ;
absvor:units = "1/s" ;
absvor:_FillValue = -9999.f ;
absvor:navigation = "nav" ;
// Cloud water
//float clwmr(record, level, lat, lon ) ;
//clwmr:long_name = "Cloud water" ;
//clwmr:units = "kg / kg" ;
//clwmr:_FillValue = -9999.f ;
//clwmr:navigation = "nav" ;
//float cloud_wat_atm(record, lat, lon ) ;
//cloud_wat_atm:long_name = "Cloud water" ;
//cloud_wat_atm:units = "kg / m2" ;
//cloud_wat_atm:_FillValue = -9999.f ;
//cloud_wat_atm:navigation = "nav" ;
//float snow_wat(record, lat, lon ) ;
//snow_wat:long_name = "Water equiv. of accumulated snow depth"
;
//snow_wat:units = "kg / m2" ;
//snow_wat:_FillValue = -9999.f ;
//snow_wat:navigation = "nav" ;
//float cicepl(record, lat, lon ) ;
//cicepl:long_name = "Categorical ice pellets" ;
//cicepl:_FillValue = -9999.f ;
//cicepl:navigation = "nav" ;
// Ozone mixing ratio
//float o3mr(record, level, lat, lon ) ;
//o3mr:long_name = "Ozone mixing ratio" ;
//o3mr:units = "kg / kg" ;
//o3mr:_FillValue = -9999.f ;
//o3mr:navigation = "nav" ;
//float Zdev(record, level, lat, lon ) ;
//Zdev:long_name = "Geopotential height anomaly" ;
//Zdev:units = "gp m" ;
//Zdev:_FillValue = -9999.f ;
//Zdev:navigation = "nav" ;
float gpt_hgt5_sfc(record, lat, lon ) ;
gpt_hgt5_sfc:long_name = "5-wave Geopotential height" ;
gpt_hgt5_sfc:units = "gp m" ;
gpt_hgt5_sfc:_FillValue = -9999.f ;
gpt_hgt5_sfc:navigation = "nav" ;
//float gflux(record, lat, lon ) ;
//gflux:long_name = "Ground heat flux" ;
//gflux:units = "W / m2" ;
//gflux:_FillValue = -9999.f ;
//gflux:navigation = "nav" ;
//float vert_sshr_trop(record, lat, lon ) ;
//vert_sshr_trop:long_name = "vertical speed shear" ;
//vert_sshr_trop:units = "1/s" ;
//vert_sshr_trop:_FillValue = -9999.f ;
//vert_sshr_trop:navigation = "nav" ;
//float T_lbls(record, soil_lpdg, lat, lon ) ;
//T_lbls:long_name = "Temperature layer between 2 depth below
surface" ;
//T_lbls:units = "K" ;
//T_lbls:_FillValue = -9999.f ;
//T_lbls:navigation = "nav" ;
//float Z_htfl(record, lat, lon ) ;
//Z_htfl:long_name = "geopotential height" ;
//Z_htfl:units = "gp m" ;
//Z_htfl:_FillValue = -9999.f ;
//Z_htfl:navigation = "nav" ;
//float RH_htfl(record, lat, lon ) ;
//RH_htfl:long_name = "relative humidity" ;
//RH_htfl:units = "percent" ;
//RH_htfl:_FillValue = -9999.f ;
//RH_htfl:navigation = "nav" ;
float srf_rn(record, lat, lon) ;
srf_rn:long_name = "surface roughness" ;
srf_rn:units = "m" ;
srf_rn:_FillValue = -9999.f ;
srf_rn:navigation = "nav" ;
float Kind_sfc(record, lat, lon) ;
Kind_sfc:long_name = "K index" ;
Kind_sfc:units = "degK" ;
Kind_sfc:_FillValue = -9999.f ;
Kind_sfc:navigation = "nav" ;
//float reserved(record, level, lat, lon ) ;
//reserved:long_name = "" ;
//reserved:_FillValue = -9999.f ;
//reserved:navigation = "nav" ;
//float reserved_lbls(record, soil_lpdg, lat, lon ) ;
//reserved_lbls:long_name = "Volumetric soil moisture content" ;
//reserved_lbls:_FillValue = -9999.f ;
//reserved_lbls:navigation = "nav" ;
//float reserved_atm(record, lat, lon ) ;
//reserved_atm:long_name = "Cloud workfunction" ;
//reserved_atm:_FillValue = -9999.f ;
//reserved_atm:navigation = "nav" ;
//float reserved_sfc(record, lat, lon ) ;
//reserved_sfc:long_name = "Meridional flux of gravity wave
stress" ;
//reserved_sfc:_FillValue = -9999.f ;
//reserved_sfc:navigation = "nav" ;
// global attributes:
:history = "created by gribtonc from HRS broadcast" ;
:title = "NMC Global Product Set" ;
:Conventions = "NUWG" ;
:version = 0.0 ; // still just a draft
data:
level = 1000, 975, 950, 925, 900, 850, 800, 750, 700, 650, 600, 550, 500, 450,
400, 350, 300, 250, 200, 150, 100, 70, 50, 30, 20, 10 ;
soil_lpdg_top = 0, 0, 5, 10, 60, 150 ;
soil_lpdg_bot = 5, 10, 30, 200, 90, 180 ;
lpdg_bot = 0, 0 ;
lpdg_top = 30, 180 ;
fhg = 2, 10 ;
fh = 1829, 2743, 3658 ;
ls_all_top = 0.0, 0.33, 0.44, 0.44, 0.47, 0.84, 0.72 ;
ls_all_bot = 1.0, 1.0, 1.0, 0.72, 1.0, 0.98, 0.94 ;
sigma = 0.9950 ;
model_id = 58, 63, 187;
// Navigation
nav_model = "GRIB1" ;
grid_type_code = 0 ;
grid_type = "Latitude/Longitude" ;
grid_name = "Global 1.0 x 1.0 degree grid" ;
grid_center = 58 ; // US Navy - Fleet Numerical Oceanography Center
grid_number = 240 ;
i_dim = "lon" ;
j_dim = "lat" ;
Ni = 360 ;
Nj = 181 ;
La1 = -90.0 ;
Lo1 = 0.0 ;
La2 = 90.0 ;
Lo2 = 359.0 ;
Di = 1.0 ;
Dj = 1.0 ;
ResCompFlag = 0x80 ;
lon = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
300, 301, 302, 303, 304, 305, 306, 307, 308, 309,
310, 311, 312, 313, 314, 315, 316, 317, 318, 319,
320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
350, 351, 352, 353, 354, 355, 356, 357, 358, 359 ;
lat = -90, -89, -88, -87, -86, -85, -84, -83, -82, -81,
-80, -79, -78, -77, -76, -75, -74, -73, -72, -71,
-70, -69, -68, -67, -66, -65, -64, -63, -62, -61,
-60, -59, -58, -57, -56, -55, -54, -53, -52, -51,
-50, -49, -48, -47, -46, -45, -44, -43, -42, -41,
-40, -39, -38, -37, -36, -35, -34, -33, -32, -31,
-30, -29, -28, -27, -26, -25, -24, -23, -22, -21,
-20, -19, -18, -17, -16, -15, -14, -13, -12, -11,
-10, -9, -8, -7, -6, -5, -4, -3, -2, -1,
0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
90 ;
}