GRIB2 is a WMO standard format for transmission of gridded meteorological data. ACCESS GRIB2 data files have been optimised to be as compatible with the WMO standard as possible and to reduce file-sizes.
To achieve improved compression two steps are performed:
If you will be accessing the GRIB2 files multiple times, it is recommended to uncompress the files before using them. This will reduce your CPU load and execution times. This can be done with the ecCodes command "grib_set -s packingType=simple in.grb2 out.grb2".
Where possible the standard WMO encodings have been used. Local tables have only been used where there is no obvious WMO equivalent. The following GRIB2 references were consulted to arrive at a suitable metadata encoding:
Currently all GRIB2 fields can be uniquely identified by looking at a combination of the GRIB2 metadata fields: 'discipline', 'parameterCategory', 'parameterNumber', 'typeOfStatisticalProcessing', 'typeOfFirstFixedSurface', 'scaleFactorOfFirstFixedSurface', 'scaledValueOfFirstFixedSurface', 'scaleFactorOfLowerLimit', & 'scaledValueOfLowerLimit'. Note that some of these fields are not defined for all GRIB messages; for example 'scaleFactorOfLowerLimit', & 'scaledValueOfLowerLimit' relate only to probabilistic quantities.
ECMWF GRIB_API key | WGRIB2 key | GRIB2 section information | Relevant GRIB2 code table |
---|---|---|---|
discipline | discipline (code_table_0.0) | Section 0, Octet 7 | Code Table 0 |
parameterCategory | parmcat | Section 4, Octet 10 | Code Tables 4.1 |
parameterNumber | parm | Section 4, Octet 11 | Code Tables 4.2 |
typeOfStatisticalProcessing | code_table_4.10 | Section 4, Octet 47 † | Code Table 4.10 |
typeOfFirstFixedSurface | code_table_4.5a | Section 4, Octet 23 | Code Table 4.5 |
scaleFactorOfFirstFixedSurface | "-lev option" | Section 4, Octet 24 | N/A |
scaledValueOfFirstFixedSurface | "-lev option" | Section 4, Octet 25-28 § | N/A |
scaleFactorOfLowerLimit | "-prob option" | Section 4, Octet 38 ‡ | N/A |
scaledValueOfLowerLimit | "-prob option" | Section 4, Octet 39-42 ‡ | N/A |
Note also that some software packages designed to query GRIB metadata return the "value" of a level (e.g. "valueOfFirstFixedSurface"). This value can be calculated from "scaledValueOfFirstFixedSurface" & "scaleFactorOfFirstFixedSurface" via the relation:
"valueOfFirstFixedSurface" = "scaledValueOfFirstFixedSurface"*pow(10, -"scaleFactorOfFirstFixedSurface").
The following two tables list relevant identifying metadata attribute values for each ACCESS field. Here "d.c.n." is an abbreviation of 'discipline'.'parameterCategory'.'parameterNumber'. "NC var" is the NetCDF variable name used for the corresponding field. Note also that parameters with a parameterNumber 192 to 254 exist only in BoM local GRIB2 tables. All other parameters are defined as existing fields in the WMO GRIB2 specification.
G2 d.c.n | Statistical Process | Level 1 Type | Level 1 Value | Prob Threshold Value | NC var | Description (units) |
---|---|---|---|---|---|---|
0.0.0 | 0 | sfc | 1.5 | N/A | av_temp_scrn | average screen level air temperature (K) |
0.0.0 | N/A | sfc | 1.5 | N/A | temp_scrn | screen level temperature (K) |
0.0.0 | N/A | sfc | 0.0 | N/A | sfc_temp | surface temperature (K) |
0.0.4 | 2 | sfc | 1.5 | N/A | tmax_scrn | screen level max temperature (K) |
0.0.5 | 3 | sfc | 1.5 | N/A | tmin_scrn | screen level min temperature (K) |
0.0.6 | N/A | sfc | 1.5 | N/A | dewpt_scrn | screen level dewpoint temperature (K) |
0.0.10 | 0 | sfc | 0.0 | N/A | av_lat_hflx | average surface latent heat flux (W m-2) |
0.0.10 | N/A | sfc | 0.0 | N/A | lat_hflx | surface latent heat flux (W m-2) |
0.0.11 | 0 | sfc | 0.0 | N/A | av_sens_hflx | average surface sensible heat flux (W m-2) |
0.0.11 | N/A | sfc | 0.0 | N/A | sens_hflx | surface sensible heat flux (W m-2) |
0.1.0 | 0 | sfc | 1.5 | N/A | av_qsair_scrn | average screen level specific humidity (kg kg-1) |
0.1.0 | N/A | sfc | 1.5 | N/A | qsair_scrn | screen level specific humidity (kg kg-1) |
0.1.1 | N/A | sfc | 1.5 | N/A | rh2m | screen level relative humidity w.r.t. water (%) |
0.1.3 | N/A | sfc | 0.0 | N/A | precwtr | precipitable water (kg m-2) |
0.1.6 | 1 | sfc | 0.0 | N/A | accum_evap | accumulated evaporation from land soil surface (kg m-2) |
0.1.8 | 1 | sfc | 0.0 | N/A | accum_prcp | accumulated precipitation (kg m-2) |
0.1.14 | 1 | sfc | 0.0 | N/A | accum_conv_snow | accumulated convective snowfall (kg m-2) |
0.1.15 | 1 | sfc | 0.0 | N/A | accum_ls_snow | accumulated large scale snowfall (kg m-2) |
0.1.47 | 1 | sfc | 0.0 | N/A | accum_ls_rain | accumulated large scale rainfall (kg m-2) |
0.1.48 | 1 | sfc | 0.0 | N/A | accum_conv_rain | accumulated convective rainfall (kg m-2) |
0.1.49 | 1 | sfc | 0.0 | N/A | accum_rain | accumulated rainfall (kg m-2) |
0.1.50 | 1 | sfc | 0.0 | N/A | accum_snow | accumulated snowfall (kg m-2) |
0.1.206 | 0 | sfc | 0.0 | N/A | av_evap_sea | average rate of evaporation over open sea (kg m-2 s-1) |
0.1.207 | 0 | sfc | 0.0 | N/A | av_sfc_mois_flx | average total surface moisture flux (kg m-2 s-1) |
0.2.2 | N/A | sfc | 10.0 | N/A | u10 | 10m wind u component (m s-1) |
0.2.2 | 0 | sfc | 10.0 | N/A | av10u | average zonal wind at 10m (m s-1) |
0.2.2 | N/A | sfc | 50.0 | N/A | u50r | zonal wind at the 50m rho level (m s-1) |
0.2.3 | N/A | sfc | 10.0 | N/A | v10 | 10m wind v component (m s-1) |
0.2.3 | 0 | sfc | 10.0 | N/A | av10v | average meridional wind at 10m (m s-1) |
0.2.3 | N/A | sfc | 50.0 | N/A | v50r | meridional wind at the 50m rho level (m s-1) |
0.2.17 | 0 | sfc | 0.0 | N/A | av_uwnd_strs | average surface zonal wind stress (N m-2) |
0.2.17 | N/A | sfc | 0.0 | N/A | uwnd_strs | surface zonal wind stress (N m-2) |
0.2.18 | 0 | sfc | 0.0 | N/A | av_vwnd_strs | average surface meridional wind stress (N m-2) |
0.2.18 | N/A | sfc | 0.0 | N/A | vwnd_strs | surface meridional wind stress (N m-2) |
0.2.22 | N/A | sfc | 10.0 | N/A | wndgust10m | 10m wind gust (m s-1) |
0.3.0 | N/A | sfc | 0.0 | N/A | conv_cldbse_pres | convective cloud-base pressure (Pa) |
0.3.0 | N/A | sfc | 0.0 | N/A | conv_cldtop_pres | convective cloud-top pressure (Pa) |
0.3.0 | N/A | sfc | 0.0 | N/A | sfc_pres | surface pressure (Pa) |
0.3.1 | 0 | sfc | 0.0 | N/A | av_mslp | average mean sea level pressure (Pa) |
0.3.1 | N/A | sfc | 0.0 | N/A | mslp | mean sea level pressure (Pa) |
0.3.5 | N/A | sfc | 0.0 | N/A | topog | topography height above MSL (gpm) |
0.3.18 | N/A | sfc | 0.0 | N/A | abl_ht | planetary boundary layer height (m) |
0.4.7 | 0 | sfc | 0.0 | N/A | av_swsfcdown | average downwards shortwave radiation at the surface (W m-2) |
0.4.7 | 0 | sfc | 0.0 | N/A | av_swirrtop | average incoming shortwave radiation flux (W m-2) |
0.4.9 | 0 | sfc | 0.0 | N/A | av_netswsfc | average net shortwave radiation at surface (W m-2) |
0.4.202 | 0 | sfc | 0.0 | N/A | av_sfc_sw_dif | average surface shortwave diffuse radiation flux (W m-2) |
0.4.203 | 0 | sfc | 0.0 | N/A | av_sfc_sw_dir | average surface shortwave direct radiation flux (W m-2) |
0.5.3 | 0 | sfc | 0.0 | N/A | av_lwsfcdown | average downwards longwave radiation at the surface (W m-2) |
0.5.4 | 0 | sfc | 0.0 | N/A | av_olr | average outgoing longwave radiation (W m-2) |
0.5.5 | 0 | sfc | 0.0 | N/A | av_netlwsfc | average net longwave radiation at surface (W m-2) |
0.5.7 | N/A | N/A | N/A | N/A | syn_ir_tbb | synthetic infrared satellite brightness temperature (K) |
0.5.7 | N/A | N/A | N/A | N/A | syn_wv_tbb | synthetic water vapour satellite brightness temperature (K) |
0.6.1 | 0 | sfc | 0.0 | N/A | av_ttl_cld | average total cloud coverage (%) |
0.6.1 | N/A | sfc | 0.0 | N/A | ttl_cld | total cloud cover (%) |
0.6.3 | N/A | sfc | 111.0 | N/A | low_cld | low cloud cover (%) |
0.6.4 | N/A | sfc | 1949.0 | N/A | mid_cld | middle cloud cover (%) |
0.6.5 | N/A | sfc | 5574.0 | N/A | hi_cld | high cloud cover (%) |
0.6.32 | N/A | sfc | 1.5 | N/A | fog_fraction | fog fraction (Numeric) |
0.7.15 | 2 | sfc | 2000.0 | N/A | max_updraft_helicity | maximum updraft helicity (m2 s-2) |
0.7.15 | 3 | sfc | 2000.0 | N/A | min_updraft_helicity | minimum updraft helicity (m2 s-2) |
0.16.4 | 2 | sfc | 1000.0 | N/A | max_radar_refl_1km | maxmium derived radar reflectivity at 1km AGL (dB) |
0.16.5 | 2 | sfc | 0.0 | N/A | max_maxcol_refl | maximum derived composite radar reflectivity (dB) |
0.19.0 | N/A | sfc | 1.5 | N/A | vis_precip | horizontal visibility (incl precip) (m) |
0.19.0 | N/A | sfc | 1.5 | 5000.0 | prob_vis_5km_ppt | probability of horizontal visibility less than 5 km (incl precip) (1) |
2.0.0 | N/A | sfc | 0.0 | N/A | lnd_mask | land mask (1) |
2.0.1 | N/A | sfc | 0.0 | N/A | sfc_rough_len | surface roughness length for momentum (m) |
2.0.3 | N/A | sfc | 0.0 | N/A | soil_mois | soil moisture content in a layer (kg m-2) |
2.0.3 | N/A | sfc | 0.1 | N/A | soil_mois | soil moisture content layer 2 (kg m-2) |
2.0.3 | N/A | sfc | 0.35 | N/A | soil_mois | soil moisture content layer 3 (kg m-2) |
2.0.3 | N/A | sfc | 1.0 | N/A | soil_mois | soil moisture content layer 4 (kg m-2) |
2.0.13 | N/A | sfc | 0.0 | N/A | canopy_wtr_cont | canopy water content (kg m-2) |
2.0.206 | N/A | sfc | 0.0 | N/A | soil_mois_cont | soil moisture available for transpiration (kg m-2) |
2.3.18 | N/A | sfc | 0.0 | N/A | soil_temp | soil temperature in a layer (K) |
2.3.18 | N/A | sfc | 0.1 | N/A | soil_temp | soil temperature layer 2 (K) |
2.3.18 | N/A | sfc | 0.35 | N/A | soil_temp | soil temperature layer 3 (K) |
2.3.18 | N/A | sfc | 1.0 | N/A | soil_temp | soil temperature layer 4 (K) |
G2 d.c.n | Statistical Process | Level 1 Type | Level 1 Value | Prob Threshold Value | NC var | Description (units) |
---|---|---|---|---|---|---|
0.0.0 | N/A | ml | 1.0 | N/A | air_temp | temperature (K) |
0.0.6 | N/A | ml | 1.0 | N/A | dewpt | dew point (K) |
0.1.0 | N/A | ml | 1.0 | N/A | spec_hum | specific humidity (kg kg-1) |
0.1.1 | N/A | ml | 1.0 | N/A | relhum | relative humidity w.r.t. water (%) |
0.1.83 | N/A | ml | 1.0 | N/A | clwc | cloud specific liquid water content (kg kg-1) |
0.1.84 | N/A | ml | 1.0 | N/A | ciwc | cloud specific ice water content (kg kg-1) |
0.2.2 | N/A | ml | 1.0 | N/A | zonal_wnd | zonal wind (m s-1) |
0.2.3 | N/A | ml | 1.0 | N/A | merid_wnd | meridional wind (m s-1) |
0.2.9 | N/A | ml | 1.0 | N/A | vertical_wnd | vertical velocity (m s-1) |
0.3.0 | N/A | ml | 1.0 | N/A | pressure | pressure (T/q or theta surface) (Pa) |
0.3.5 | N/A | ml | 1.0 | N/A | geop_ht | geopotential height above MSL (gpm) |
Not all ACCESS fields maps to predefined WMO GRIB2 fields. In these cases a local table entry has been created.
The Bureau's local table is currently at version "1". It includes the following entries:
G2 d.c.n | Units | G2 tablesVersion | Description |
---|---|---|---|
0.1.206 | kg m-2 s-1 | 9 | Average rate of evaporation over open sea |
0.1.207 | kg m-2 s-1 | 9 | Average total surface moisture flux |
0.4.202 | W m-2 | 9 | Average surface shortwave diffuse radiation flux |
0.4.203 | W m-2 | 9 | Average surface shortwave direct radiation flux |
2.0.206 | kg m-2 | 9 | Soil moisture available for transpiration |
Zonal and meridional winds at the 50m rho level have a locally defined surface type ("typeOfFirstFixedSurface"):
Fixed surface type | Description |
---|---|
201 | Nominal height above ground (m) |
In addition APS3 ACCESS data can take on the following "generatingProcessIdentifier" metadata values:
Model name | generatingProcessIdentifier (ID of model) |
---|---|
ACCESS-G | 1 |
ACCESS-GE | 2 |
ACCESS-VT | 50 |
ACCESS-PH | 54 |
ACCESS-BN | 58 |
ACCESS-AD | 62 |
ACCESS-SY | 66 |
ACCESS-DN | 70 |
ACCESS-TC01 | 80 |
ACCESS-TC02 | 81 |
ACCESS-TC03 | 82 |
Layer | APS2 listed depth | APS3 (corrected) depth |
---|---|---|
layer 2 | 10 to 25 cm | 10 to 35 cm |
layer 3 | 25 to 65 cm | 35 to 100 cm |
layer 4 | 65 to 200 cm | 100 to 300 cm |
There is a known issue with a GRIB2 metadata attribute that affects all ACCESS fields representing accumulated quantities. This attribute describes the start of the accumulation time interval and is set incorrectly. This can cause some software that parses GRIB2 to misrepresent the length of time over which a quantity was accumulated. Fortunately this piece of metadata in the GRIB2 header is redundant and other metadata attributes (which are set correctly) can be used to deduce the start of the accumulation time interval (and indeed many software packages that read GRIB will get the accumulation periods correct because of this, so not all software is affected by this issue).
The metadata in question is the so-called "forecastTime" key present in section 4 of the GRIB2 header. For accumulated quantities this metadata attribute should represent a "time delta" relative to the "reference time". A choice was made for ACCESS data to set the reference time to the nominal analysis date-time of the model (i.e. the base date/time of the model). As such the correct value of this "forecastTime" attribute should be -3 hours for ACCESS models, or -30 minutes for ACCESS-C models. However current GRIB software can't encode/represent negative values for this attribute (although the current GRIB2 standard does not explicitly disallow negative values in this case). As such "forecastTime" attributes have been set arbitrarily to "0". To calculate the length of the accumulation time period it is recommended that the "lengthOfTimeRange" attribute be used which is also present in the GRIB2 header (section 4) and is set correctly.
To check if you are affected you should keep in mind that all accumulated fields in ACCESS actually represent a quantity accumulated from the start of a so called "4DVAR assimilation window". For ACCESS models this window currently starts 3 hours before the nominal base-time/analysis-time of the model run, except for the ACCESS-C models whose assimilation window starts 30 minutes before the nominal base-time/analysis-time of the model run. Hence the +24 hour forecast of accumulated precipitation, for example, actually represents an accumulation of all analysed/forecast precipitation from -3 hours to +24 hours (where these hours are of course relative to the nominal base-time/analysis-time of the model run). If your GRIB software suggests such a field is accumulated from +0 to +24 hours then it is affected by this metadata issue.
Currently bitmap messages are compressed using JPEG-2000 or PNG methods to reduce file sizes. Some GRIB software is not able to interpret these fields as it is not advised by the WMO to compress bitmap messages. If you have this problem, you can decompress the file, e.g. with the ecCodes grib_set utility: "grib_set -s packingType=grid_simple in.grb2 out.grb2".
Currently ACCESS GRIB2 data is based on a GRIB2 "tablesVersion" ("master_table") version = 9 (except for the new synthetic satellite fields as noted above). These versions may be too recent for some GRIB2 parsing libraries with the effect that such software can not automatically interpret the meaning of GRIB2 metadata with these version numbers. For WGRIB2 a flag can be passed to attempt to interpret the data with an older master table version. For example the flag "-set master_table 8" can be passed in to allow the software to use master_table version 8 to interpret the metadata (e.g. "wgrib2 IDY25300.APS1.wind.10m.2013031618.024.surface.grb2 -d 1 -v -set master_table 8"). For ACCESS data, with some exceptions, version 9 can be regarded as backward compatible with 8 and possibly earlier revisions. For ecCodes (which replaces GRIB_API) it is best to download the latest stable version which can handle recent tablesVersion editions. Alternatively the ecCodes utility grib_set can be used to reset the tablesVersion to an earlier version, e.g. "grib_set -s tablesVersion=8 in.grb2 out.grb2". This may allow earlier versions of ecCodes/GRIB_API to display the meaning of various key code values with commands like "grib_dump -O out.grb2".
For native (hybrid-height) level data, a GRIB-2 message will include a list of vertical coordinate parameters ("PV") values corresponding to "A" and "B" values for either "rho" or "theta" levels. Level parameters 1..70 (for ACCESS-G) and 1..80 (for ACCESS-C) are the A(k) values and level parameters 71..140 (for ACCESS-G) and 81-160 (for ACCESS-C) are the B(k) values listed in the Hybrid Height Levels table (Appendix B) of the relevant product's documentation.