This page contains a few rules on the UERRA parameters. A complete list of all the parameters and GRIB2 encoding is given here.
Table of Contents |
---|
UERRA
...
parameter rules
Units
- All fields shall use units as defined in GRIB Edition 2. The exact definition for each parameter is linked in Parameter page
Output frequency, levels for an/fc
- all details are available in Parameter page
Accumulations
- All accumulations shall start from the beginning of the forecast
- The initial state (forecast step zero) shall be a part of all forecasts, all members, etc.
- The values of accumulated fields shall be set to zero for t=0
Instantaneous fields
- Instantaneous fields shall be archived with a frequency defined here for each group of parameters and forecast type.
- must not be included (as it should be 0 value field by definition)
Parameters archived since previous post-processing
- Some parameters (2m tmin/tmax, 10m wind gust) shall be archived with varying lenght length of time range intervals (:
0-1/1-2/2-3/4-5/5-6/6-9/9-12/../27-30 as per here)
Find further in this page GRIB2 files examples including header outputs etc
Fluxes
- The flux sign convention will be is positive downwards.
- Positive evaporation represents condensation.
Missing values
- Bitmaps shall be used to indicate missing values (i.e. Soil temperature (st) shall be coded using a bitmap, because there is no model output over the sea)
Grid and resolution
- Each partner will provide their eps data on their native grid.
- Grids are defined in GRIB2 using an accuracy of 1/1000000 (one millionth) of a degree.
...
Ensemble type of
...
outputs
- Ensemble member numbering must start from 1
Model levels
- Model level numbering must start from 1
- The Control Forecast must be number 0,
- The number of members is identical to the number of all EPS members plus the Control Forecast.
GRIB2 encoding
ECMWF encoding/decoding Software
ECMWF makes available a GRIB decoding library (grib_apiGRIB-API) for the benefit of the WMO community. grib_api GRIB-API can be freely downloaded from here and the documentation can be found here. The grib_api GRIB-API provides a simplified access to GRIB2 headers through a set of virtual keys documented here.
Encoding
1) UERRA production status of processed data
Octet 36 of section 1 of a GRIB2 message contains the Production status of processed data. The WMO has added two values to table 1.3 Production status of data:
- 8: UERRA operational products
- 9: UERRA test products
The value 9 should be used when testing and 8 for operational data.
2) Control and perturbed forecasts
Control and perturbed forecasts are identified in section 1 and 4. The following tables explains how to code them in GRIB2:
Section 1 | |||
---|---|---|---|
Octets | Example perturbed | Example control | |
21 | typeOfProcessedData | =4 | =3 |
Ensemble (section 4, template 4.61) | |||
---|---|---|---|
Octets | Example perturbed | Example control | |
35 | type of ensemble forecast | = 255 (missing) | = 255 (missing) |
36 | perturbation number | = 7 | = 0 |
37 | number of forecasts in ensemble | = 51 | = 51 |
3) Time component and reforecasts
4) Examples of GRIB2 files
real-time | re-forecast | |
Daily average | Control Perturbed | Control Perturbed |
Accumulations | Control Perturbed | Control Perturbed |
Instantaneous | Control Perturbed | Control Perturbed |
Maximum over the last 6 hours | Control Perturbed | Control Perturbed |
Minimum over the last 6 hours | Control Perturbed | Control Perturbed |
Info |
---|
The new GRIB-API version 1.19.0 which can recognise all UERRA parameters is already available on all ECMWF's premises (e.g. ecgate). Its official public release will follow soon in following weeks. |
UERRA-GRIB2 checking tool
The so called tigge_check tool is a part of GRIB-API package. It should be used to validate all GRIB2 files prepared for UERRA (the option -u). The tool is checking all encoding details so that only fully compliant UERRA files following exactly required definitions would pass. It can check also allowed value ranges for each parameter if used with the option -v. These ranges have not been fully defined for all UERRA parameters yet e.g. for radiation fluxes. Sometimes warnings about values exceeding expected limits do not mean error in the checked data but only model specific correct values.
Warning | ||
---|---|---|
| ||
During the development phase there will be always the latest version of tigge_check tuned on the latest full sample data from providers available on ecgate: ecgate: ~marm/uerra/bin/tigge_check After the end of the development phase (when full samples for more days/weeks are available from all expected models) that last version of tigge_check will be added to the next closest official GRIB-API release. |
Examples of tigge_check usage:
Code Block |
---|
> module load grib_api/1.17.0
> load grib_api 1.17.0 Library (GRIB_API_MODE, GRIB_API_VERSION, GRIB_API_INCLUDE, GRIB_API_LIB, GRIB_API_INCLUDE_DIR, GRIB_API_LIB_DIR, EC_FFLAGS, EC_CFLAGS, EC_CXXFLAGS, EC_FLDFLAGS, EC_CLDFLAGS, EC_CXXLDFLAGS)
>
# example with one data value ranges warning and one encoding error
> tigge_check -u -w -v *.grib2
> warning: an.enda.tcw.sfc.0.fp.grib2, field 1 [total_column_water_sfc]: total_column_water_sfc maximum value 31.5638 is not in [50,150]
=> [31.5638,150]
> fc.oper.2t.sfc.2.grib2 , field 1 [temperature_hl]: invalid height level 3 |
GRIB2 encoding details
The complete WMO compliant GRIB2 definitions of all UERRA parameters are linked here.
The additional generally required encoding UERRA details are listed below:
Section 1 | |||
---|---|---|---|
Octets | Key name | Value | Description |
6-7 | centre | 78 | COSMO products (code Offenbach edzw) |
84 | Meteo-France products (code Toulouse lfpw ) | ||
82 | HARMONIE products (code Sweden eswi) | ||
74 | MO products (code UK Meteorological Office Exeter egrr) | ||
10 | tablesVersion | 17 | latest WMO table with some new definitions for UERRA |
20 | productionStatusOfProcessedData | 8 | operational UERRA products |
9 | test UERRA products | ||
21 | typeOfProcessedData | 0 | Analysis products |
1 | Forecast products |
Deterministic system (both analysis and forecast products)
Section 4 | |||
---|---|---|---|
Octets | Key name | Value | Description |
8-9 | productDefinitionTemplateNumber | 0 | Analysis and Forecast products (instantaneous) (Analysis or forecast at a horizontal level or in a horizontal layer at a point in time (grib2/tables/17/4.0.table)) |
8 | Analysis and Forecast products (statistically processed = accumulated/min/max values) (Average, accumulation, extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval (grib2/tables/17/4.0.table)) |
Ensemble DA system (both analysis and forecast products)
Section 4 | |||
---|---|---|---|
Octets | Key name | Value | Description |
8-9 | productDefinitionTemplateNumber | 1 | Analysis and Forecast products (instantaneous) (Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time (grib2/tables/17/4.0.table)) |
11 | Analysis and Forecast products (statistically processed = accumulated/min/max values) (Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous time interval (grib2/tables/17/4.0.table)) | ||
35 | type of ensemble forecast | 255 | missing |
36 | perturbation number | 2 | Example for 2nd eps member of ensemble with 4 members (0/1/2/3) |
37 | number of forecasts in ensemble | 4 |
Examples of UERRA compliant GRIB2 files
deterministic | ensemble DA | |||
AN | FC | AN | FC | |
Accumulations | N/A | N/A | ||
Instantaneous on surface level | ||||
Instantaneous on model level (Specific humidity on model level 1) | ||||
Maximum since previous post-processing (Surface air maximum temperature since previous post-processing) | N/A | grib* | N/A | |
Minimum since previous post-processing (Surface air minimum temperature since previous post-processing) | N/A | N/A | ||
Parameter on soil level (Soil temperature on soil level 1) |
*disregard data values in this grib (some step/level values were created artificially as real data has not been available yet)
Examples of encoding for various parameter validity types
Instantaneous
This example describes an instantaneous field valid on 20120103 00Z from a forecast starting on 20120101 00Z (time step=48 hours) .
- In bold, the values are fixed. They are meant to be used by all partners
- In green, these are the values for the example.
Time ( instantaneous ) | ||||
---|---|---|---|---|
Start of forecast ( section 1 ) | ||||
Octets | values | Meaning of values | Grib_api values | |
12 | Significance of Reference Time | 1 | Start of forecast | |
13-14 | Year (four digits) | 2012 | year of start of forecast | dataDate=20120101 dataTime=0 |
15 | Month | 01 | month of start of forecast | |
16 | Day | 01 | day of start of forecast | |
17 | Hour | 00 | hour of start of forecast | |
section 4 e.g. template 4.1 | ||||
18 | Indicator of unit of time range | 1 | Hour | |
19-22 | Forecast time | 48 | Forecast step | stepType=instant, step=48 |
Accumulations
This example represents a 54 hour accumulation of a field produced by a forecast started on 20120101 00Z.
- In bold, the values are fixed. They are meant to be used by all partners
- In green, these are the values for the example.
Time ( accumulated ) | ||||
---|---|---|---|---|
Start of forecast ( section 1 ) | ||||
Octets | Values | Meaning of values | Grib_api key | |
12 | Significance of Reference Time | 1 | Start of forecast | |
13-14 | Year (four digits) | 2012 | year of start of forecast | dataDate=20120101 dataTime=0 |
15 | Month | 01 | month of start of forecast | |
16 | Day | 01 | day of start of forecast | |
17 | Hour | 00 | hour of start of forecast | |
Accumulation ( section 4 e.g. template 4.11 ) | ||||
18 | Indicator of unit of time range | 1 | Hour | |
19-22 | Forecast time | 0 | Accumulation starts at step=0 | startStep=0 |
38-39 | year of end of overall time interval | 2012 | End of accumulated period, 20120103 06Z |
endStep=54 |
40 | month of end of overall time interval | 01 | ||
41 | day of end of overall time interval | 03 | ||
42 | hour of end of overall time interval | 06 | ||
45 | number of time ranges | 1 | Only one type of time statistics used (accumulation) | |
46-49 | total number of data values missing in statistical process | 0 | ||
50 | Statistical process used to calculate the processed field from the field at each time increment during the time range | 1 | Accumulation | stepType=accum |
51 | Type of time increment between successive fields used in the statistical processing | 2 | Successive times processed have same start time of forecast, forecast time is incremented | |
52 | Indicator of unit of time for time range over which statistical processing is done | 1 | Hour | |
53-56 | Length of the time range over which statistical processing is done, in units defined by the previous octet | 54 | ||
57 | Indicator of unit of time for the increment between the successive fields used | 255 | Missing | |
58-61 | Time increment between successive fields, in units defined by the previous octet | 0 | 0 |
Maximum since the previous post-processing
This example represents a maximum since the previous post-processing of a field valid on 20120103 00Z produced by a forecast started on 20120101 00Z . In this example, the maximum is the 6-hourly maximum in the time interval: steps 42 to 48.
- In bold, the values are fixed. They are meant to be used by all partners
- In green, these are the values for the example.
Time (Maximum over the last 6 hours ) | ||||
---|---|---|---|---|
Start of forecast ( section 1 ) | ||||
Octets | values | Meaning of values | Grib_api keys | |
12 | Significance of Reference Time | 1 | Start of forecast | |
13-14 | Year (four digits) | 2012 | year of start of forecast | dataDate=20120101 dataTime=0 |
15 | Month | 01 | month of start of forecast | |
16 | Day | 01 | day of start of forecast | |
17 | Hour | 00 | hour of start of forecast | |
Maximum ( section 4 e.g. Template 4.11) | ||||
18 | Indicator of unit of time range | 1 | Hour | |
19-22 | Forecast time | 42 | Step at the beginning of the 6-hourly interval | startStep=42 |
38-39 | year of end of overall time interval | 2012 | End of maximum period | endStep=48 |
40 | month of end of overall time interval | 01 | ||
41 | day of end of overall time interval | 03 | ||
42 | hour of end of overall time interval | 00 | ||
45 | number of time ranges | 1 | Only one time statistics applied (maximum) | |
46-49 | total number of data values missing in statistical process | 0 | ||
50 | Statistical process used to calculate the processed field from the field at each time increment during the time range | 2 | Maximum | stepType=max |
51 | Type of time increment between successive fields used in the statistical processing | 2 | Successive times processed have same start time of forecast, forecast time is incremented | |
52 | Indicator of unit of time for time range over which statistical processing is done | 1 | Hour | indicatorOfUnitForTimeRange=1 |
53-56 | Length of the time range over which statistical processing is done, in units defined by the previous octet | 6 | 6-hourly maximum | lengthOfTimeRange=6 |
57 | Indicator of unit of time for the increment between the successive fields used | 1 | Hour | indicatorOfUnitForTimeIncrement=1 |
58-61 | Time increment between successive fields, in units defined by the previous octet | 0 | Maximum computed continuously in the 6 hourly interval | timeIncrement=0 |
Minimum since the previous post-processing
This example represents a minimum since the previous post-processing of a field valid on 20120103 00Z produced by a forecast started on 20120101 00Z . In this example, the minimum is the 6-hourly minimum in the time interval: steps 42 to 48.
- In bold, the values are fixed. They are meant to be used by all partners
- In green, these are the values for the example.
Time (Minimum over the last 6 hours ) | ||||
---|---|---|---|---|
Start of re-forecast ( section 1 ) | ||||
Octets | Fixed | Meaning of values | Grib_api keys | |
12 | Significance of Reference Time | 1 | Start of forecast | |
13-14 | Year (four digits) | 2012 | year of start of forecast | dataDate=20120101 dataTime=0 |
15 | Month | 01 | month of start of forecast | |
16 | Day | 01 | day of start of forecast | |
17 | Hour | 00 | hour of start of forecast | |
Minimum ( section 4 e.g. Template 4.11) | ||||
18 | Indicator of unit of time range | 1 | Hour | |
19-22 | Forecast time | 42 | Step at the beginning of the 6-hourly interval | startStep=42 |
45-46 | year of end of overall time interval | 2012 | End of minimum period |
endStep=48 |
47 | month of end of overall time interval | 01 | ||
48 | day of end of overall time interval | 03 | ||
49 | hour of end of overall time interval | 00 | ||
52 | number of time ranges | 1 | Only one time statistics applied (minimum) | |
53-56 | total number of data values missing in statistical process | 0 | ||
57 | Statistical process used to calculate the processed field from the field at each time increment during the time range | 3 | Minimum | stepType=min |
58 | Type of time increment between successive fields used in the statistical processing | 2 | Successive times processed have same start time of forecast, forecast time is incremented | |
59 | Indicator of unit of time for time range over which statistical processing is done | 1 | Hour | indicatorOfUnitForTimeRange=1 |
60-63 | Length of the time range over which statistical processing is done, in units defined by the previous octet | 6 | 6-hourly minimum | lengthOfTimeRange=6 |
64 | Indicator of unit of time for the increment between the successive fields used | 1 | Hour | indicatorOfUnitForTimeIncrement=1 |
65-68 | Time increment between successive fields, in units defined by the previous octet | 0 | Minimum computed continuously in the 6 hourly interval | timeIncrement=0 |