This is a compilation of  the known differences presented by the output data when generated by the present Products Generation software (PRODGEN) vs the new one (PGEN).

It does not explain the differences between the software itself.

See further details of the new Products Generation including the project timeline.


Users  requesting reduced Gaussian grids will need to update the version of ecCodes  to 2.8.2  (or follow up versions )


Different interpolation library

Different data values

PGEN software uses MIR interpolation library and therefore data values will not be exactly the same. Prodgen uses EMOSLIB which is no longer supported .See MARS interpolation with MIR for further information about differences  between EMOSLIB and MIR.

Different point count

Specific cases for  reduced Gaussian grids present different point count.

Duplicated fields

PGEN does not deliver duplicated fields  configured in the requirements.   e.g. In the request below the parameter 2T will be delivered twice by PRODGEN and only once by PGEN

DIS,
TARGET 	=	ECM:EC,
STREAM 	= 	DA,
TYPE 	= 	FC,
GRID 	= 	0.125/0.125,
AREA 	= 	55/2.5/47/15.5,
TIME 	= 	00,
LEVTYPE 	= 	SFC,
STEP 	= 	0/to/168/by/3,
PARAM 	= 	2T/SSRD/2T

Differences for area encoding

Different longitude encoding in GRIB1

PGEN is encoding the west/east longitudes differently  in GRIB1. 

  • prodgen will encode longitude -180 as 180, pgen will encode -180
  • prodgen will encode longitude 359 as -1, pgen will encode it as 359


User inputPRODGENPGEN

area=90/-180/-90/179.5

grid=0.5/0.5

area=90/180/-90/179.5


area=90/-180/-90/179.5


area=90/0/-90/359

grid=1/1

area=90/0/-90/-1


area=90/0/-90/359


area=90/-60/25/60

grid=640

gaussian=reduced

area=89.892/300/25.092/60


area=89.892/-60/25.092/60



Different precision 

In GRIB1, the precision is millidegrees; in GRIB2, it is microdegrees.  PGEN lets ecCodes decide on the best precision. PRODGEN encodes the areas in millidegrees, therefore the encoded values in GRIB2 can be different.

This case will affect mostly  to  gaussian grids  e.g. :

User inputPRODGENPGEN

area=90/-60/25/60

grid=640

gaussian=regular

form=GRIB2

area=89.892/300.093/25.092/59.906


area=89.8924/300.094/25.0918/59.9062



Different rounding

e.g.

User inputPRODGENPGEN

area=90/-60/25/60

grid=640

gaussian=regular

area=89.892/-59.907/25.092/59.906


area=89.892/-59.906/25.092/59.906



Different east longitude

When gausssian grid are requested, PRODGEN sets the east latitude in the GRIB header to the user provided value (modulo 360 and modulo the GRIB1 precision). pgen will put the longitude of the most eastern point.


e.g

User inputPRODGENPGEN

area=90/0/-90/359.9

grid=128

gaussian=reduced

area=89.463/0/-89.463/359.9

gridname=N128

area=89.463/0/-89.463/359.297

gridname=N128

Constant fields

Fields that may contain constant values are  packed by PGEN with bitsPerValue=0. This is a more efficient way to encode such fields and leads to smaller files.

An example of such field is CLWC on model levels high in the atmosphere where the values are zero at all grid points.

As a result, file sizes may change from one day to the next. 

PRODGEN encodes these with a bitsPerValue=8 so file sizes are constant from one day to the next.


Local definitions

PRODGEN does not produce files in GRIB1 with local definitions for 00 and 12 UTC HRES fields.  They are kept for 06 and 18 BC and ENS (including ENS-extended and SEAS).

The local definition are (currently) retained by PGEN.

E.g given two files:

H1D09060000091600001.pgen

H1D09060000091600001

Please retain the order of the files when doing the comparison

grib_compare -H H1D09060000091600001.pgen H1D09060000091600001                                      

-- GRIB #1 -- shortName=sd paramId=141 stepRange=240 levelType=sfc level=0 packingType= gridType= --
long [totalLength]: [26534] != [26510]
long [section1Length]: [52] != [28]
[reservedNeedNotBePresent] not found in 2nd field
[localDefinitionNumber] not found in 2nd field
[marsClass] not found in 2nd field
[marsType] not found in 2nd field
[marsStream] not found in 2nd field
[experimentVersionNumber] not found in 2nd field
[perturbationNumber] not found in 2nd field
[numberOfForecastsInEnsemble] not found in 2nd field
[padding_local1_1] not found in 2nd field