In progress. All details still to be updated..
General requirements
Encoding format
- WMO GRIB2 data format.
Missing values
- Bitmaps shall be used to indicate missing values.
Grid and resolution
- Each partner will provide their eps data on a 0.25/0.25 regular lat-lon grid (1440x721 grid points, including poles).
- First grid point is 90N 0E. The data will be archived first from west to east (OE to 358.5), and then from north to south (90N to 90S).
- The related GRIB 2 meta data called scanning mode should equal to 0.
Scanning mode 0
- i scans positively (west to east)
- i points are consecutive
- j scans negatively (north to south)
- i scans positively (west to east)
- The fields have to be provided on...
- Grids are defined in GRIB2 using an accuracy of 1/1000000 (one millionth) of a degree.
Data compression
CCSDS compression should be used
GRIB2 encoding
All data must be encoded following the required rules described below to achieve fully compliant WPMIP format from all centres.
Encoding software
ECMWF makes available a GRIB decoding library (ecCodes) for the benefit of the WMO community. ecCodes can be freely downloaded from here and the documentation can be found here.
For more general information about GRIB2 format please refer to WMO Manual on Codes .
Encoding details
General encoding (TBA)
Specific details which should be encoded in GRIB2 sections 1 and 4:
Section 1 | ||||
---|---|---|---|---|
Octets | Key name | Value | Description | Comments |
6-7 | centre | X | WMO Centre's code (table below) | |
8-9 | subCentre | 0 | WMO Sub-Centre's code if needed (table below) | only if needed |
10 | tablesVersion | 36 | The latest WMO table*1 | |
11 | localTablesVersion | 0 | Local tables not used | |
20 | productionStatusOfProcessedData | 16 | Weather Prediction Model Intercomparison Project *2 | use during production phase |
17 | Weather Prediction Model Intercomparison Project *2 | use during testing phase | ||
21 | typeOfProcessedData | 0 | Analysis products | |
1 | Forecast products |
*1 New WMO tables version 36 (containing also new WPMIP keys) will be officialy released by WMO later in 2025 (November)
*2 New codes for the WPMIP (part of GRIB 2 tables version 36) to be approved by WMO by August 2025 (Manual on Codes (WMO-No. 306), Volume I.2, GRIB code table 1.3)
Section 4 | |||
---|---|---|---|
Octets | Value (Example perturbed) | Value (Example control) | |
8-9 | productDefinitionTemplateNumber | 1/11*1 | 1/11*1 |
13 | backgroundProcess | X*2 | X*2 |
14 | generatingProcessIdentifier | X*2 | X*2 |
35 | typeOfEnsembleForecast | 255 (missing) | 255 (missing) |
36 | perturbationNumber | 7 | 0 |
37 | numberOfForecastsInEnsemble | 51 | 51 |
*1 statistically processed (typeOfStatisticalProcessing is set up)
*2 centre/model version dependent (see below)
Section 5 | |||
---|---|---|---|
Octets | Value | Description | |
10-11 | dataRepresentationTemplateNumber | 42 | [Grid point data - CCSDS recommended lossless compression (grib2/tables/29/5.0.table) ] |
Centre codes and model versions
WMO Centre key for WPMIP together with subCentre defined for each organization is used to identified each data provider
- it was agreed that a new WMO centre code for WPMIP will be needed
- the current deadline for WMO proposals is 3rd October 2025. Proposals made at this meeting will be approved (and new GRIB2/BUFR4 codes available) in May 2026.
- it is assumed that centre=323 which is currently free, could be assigned for the project and thus could be used in advance
- if it changes, we would have to update the centre code as needed
Model name (e.g. ecmf_AIFS_v1_oic) is identified in ecCodes for given centre, model and model version from following keys:
- centre (unique for each provider)
- https://codes.ecmwf.int/grib/format/mars/centre/
- most centre's acronym come originally from GTS ones as per https://community.wmo.int/en/activity-areas/operational-information-service/routeing-catalogues
- more recently we have started adding new acronyms as needed (without any relations to GTS)
- https://codes.ecmwf.int/grib/format/mars/centre/
- backgroundProcess (unique for each model)
- generatingProcessIdentifier (unique for each model version)
For example model=ecmf_AIFS_v1_oic would be encoded using:
- centre=98
- backgroundProcess=1
- generatingProcessIdentifier=1
Initial conditions
- own initial conditions (OIC)
- same initial conditions (SIC)
WMO centre=323 (expected code for WPMIP project in next WMO tables release)
Organisation | subCentre code*1 | centre acronym*1 | modelName*1 | modelVersion*1 | background Process | generating Process Identifier | eccodes model*1 | remark |
---|---|---|---|---|---|---|---|---|
BoM | 1 | ammc | AccessG | v1_oic | 14 | 1 | ammc-AccessG-v1_oic | |
AccessG | v1_sic | 14 | 2 | ammc-AccessG-v1_sic | ||||
AIFS_init_AccessG | v1_oic | 5 | 1 | ammc-AIFS_init_AccessG-v1_sic | AIFS Initialized with Access-G | |||
AIFS_init_AccessG | v1_sic | 5 | 2 | ammc- AIFS_init_AccessG-v1_sic | ||||
CMA | 38 | babj | Fengshun | v1_oic | 25 | 1 | babj-Fengshun-v1_oic | |
Fengshun | v1_sic | 25 | 2 | babj-Fengshun-v1_sic | ||||
CPTEC | 46 | sbsj | GM | v1_oic | 6 | 1 | sbsj-GM-v1_oic | |
GM | v1_sic | 6 | 2 | sbsj-GM-v1_sic | ||||
CSIR | 137*3 | csir*2 | GM | v1_oic | 7 | 1 | csir-GM-v1_oic | 137/csir does not exist in WMO (COMMON CODE TABLE C-11) and thus in eccodes yet |
GM | v1_sic | 7 | 2 | csir-GM-v1_sic | ||||
DWD | 78 | edzw | ICON | v1_oic | 3 | 1 | edzw-ICON-v1_oic | |
ICON | v1_sic | 3 | 2 | edzw-ICON-v1_sic | ||||
AICON | v1_oic | 4 | 1 | edzw-AICON-v1_oic | ||||
AICON | v1_sic | 4 | 2 | edzw-AICON-v1_sic | ||||
ECCC | 53 | cwao | GDPS | v1_oic | 8 | 1 | cwao-GDPS-v1_oic | |
GDPS | v1_sic | 8 | 2 | cwao-GDPS-v1_sic | ||||
GDPS_nudge | v1_oic | 9 | 1 | cwao-GDPS_nudge-v1_oic | GDPS spectral nudging | |||
GDPS_nudge | v1_sic | 9 | 2 | cwao-GDPS_nudge-v1_sic | ||||
GEML | v1_oic | 10 | 1 | cwao-GDPS_nudge-v1_oic | GEML experimantal | |||
GEML | v1_sic | 10 | 2 | cwao-GDPS_nudge-v1_sic | ||||
ECMWF | 98 | ecmf | IFS | v1_49r1 | 255 | 1 | ecmf-IFS-v1_49r1 | operational IFS, version cy49r1 |
AIFS | v1_oic | 1 | 1 | ecmf-AIFS-v1_oic | operational AIFS version 1.0 | |||
AIFS | v1_sic | 1 | 2 | ecmf-AIFS-v1_sic | operational AIFS version 1.0 | |||
AIFS_nudge_IFS | v1_49r1 | 2 | 1 | ecmf-AIFS_nudge_IFS-v1_49r1 | spectral nudging to IFS | |||
GFDL | 138*3 | gdfl*2 | SHiELD | v1_oic | 11 | 1 | gfdl-SHiELD-v1_oic | 138/gfdl does not exist in WMO (COMMON CODE TABLE C-11) and thus in eccodes yet |
SHiELD | v1_sic | 11 | 2 | gfdl-SHiELD-v1_sic | ||||
IMD | 28 | vabb | IMDGFS | v1_oic | 12 | 1 | vabb-IMDGFS-v1_oic | |
IMDGFS | v1_sic | 12 | 2 | vabb-IMDGFS-v1_sic | ||||
NCUM | v1_oic | 13 | 1 | vabb-NCUM-v1_oic | ||||
NCUM | v1_sic | 13 | 2 | vabb-NCUM-v1_sic | ||||
JMA | 34 | rjtd | GSM | v1_oic | 15 | 1 | rjtd-GSM-v1_oic | Operational Global Spectral Model (GSM) |
GraphCast_init_GSM | v1_oic | 16 | 1 | rjtd-GraphCast_init_GSM-v1_oic | GraphCast initialized and fine-tuned by GSM initial conditions | |||
KIAPS/KMA | 4 | rksl | KIM | v1_oic | 24 | 1 | rksl-KIM-v1_oic | |
KIM | v1_sic | 24 | 2 | rksl-KIM-v1_sic | ||||
UKMO | 74 | egrr | UM | v1_oic | 17 | 1 | egrr-UM-v1_oic | |
UM | v1_sic | 17 | 2 | egrr-UM-v1_sic | ||||
METNO | 88 | enmi | AIWP | v1_oic | 18 | 1 | enmi-AIWP-v1_oic | |
AIWP | v1_sic | 18 | 2 | enmi-AIWP-v1_sic | ||||
NOAA | 9 | noaa*2 | GFS | v1_oic | 19 | 1 | noaa-GFS-v1_oic | noaa acronym does not exist in eccodes yet |
GFS | v1_sic | 19 | 2 | noaa-GFS-v1_sic | ||||
MLGFS | v1_oic | 20 | 1 | noaa-MLGFS-v1_oic | ||||
MLGFS | v1_sic | 20 | 2 | noaa-MLGFS-v1_sic | ||||
NRL | 139*3 | usnrl*2 | NOGAPS | v1_oic | 21 | 1 | usnrl-NOGAPS-v1_oic | 139/usnrl does not exist in WMO (COMMON CODE TABLE C-11) and thus in eccodes yet |
NOGAPS | v1_sic | 21 | 2 | usnrl-NOGAPS-v1_sic | ||||
RAS | 4 | rums | GM | v1_oic | 22 | 1 | rums-GM-v1_oic | |
GM | v1_sic | 22 | 2 | rums-GM-v1_sic | ||||
SAWS | 149*3 | saws*2 | GM | v1_oic | 23 | 1 | saws-GM-v1_oic | 149/saws does not exist in WMO (COMMON CODE TABLE C-11) and thus in eccodes yet |
GM | v1_sic | 23 | 2 | saws-GM-v1_sic |
Remarks:
*1 in ECMWF's ecCodes package
*2 to be added to ECMWF's ecCodes package
*3 WMO to be asked for a new code
Examples of the required GRIB2 files
parameter | Sample file | GRIB metadata dump*1 |
---|---|---|
*1 using "grib_dump -O" command from ecCodes package