From ca5718f38b193ec0a677a874507790c1d7bbb115 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 25 Oct 2022 11:25:02 +0100 Subject: [PATCH 1/7] ECC-1451: GRIB: key 'level' not equal to 'mars.levelist' for soil levels --- definitions/grib2/template.4.horizontal.def | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/definitions/grib2/template.4.horizontal.def b/definitions/grib2/template.4.horizontal.def index d6aa9fbee..5f1c61f85 100755 --- a/definitions/grib2/template.4.horizontal.def +++ b/definitions/grib2/template.4.horizontal.def @@ -82,11 +82,13 @@ if (extraDim) { } } -# See ECC-854, ECC-1435 +# See ECC-854, ECC-1435, ECC-1451 if( (typeOfFirstFixedSurface == 151 && typeOfSecondFixedSurface == 151) || (typeOfFirstFixedSurface == 152 && typeOfSecondFixedSurface == 152) || (typeOfFirstFixedSurface == 114 && typeOfSecondFixedSurface == 114) ) { alias mars.levelist = bottomLevel; + alias ls.level = bottomLevel; + alias vertical.level = bottomLevel; } alias ls.typeOfLevel=typeOfLevel; From fbec511dcb9d473b7dd352ffefb347f1d80ebce6 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 25 Oct 2022 11:26:29 +0100 Subject: [PATCH 2/7] Bump up version --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2cd226c30..78382b33c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,7 +21,7 @@ cmake_minimum_required( VERSION 3.12 FATAL_ERROR ) find_package( ecbuild 3.7 REQUIRED HINTS ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/../ecbuild) # Initialise project -project( eccodes VERSION 2.27.0 LANGUAGES C ) +project( eccodes VERSION 2.27.1 LANGUAGES C ) ############################################################################### # system checks needed for eccodes_config.h and some options like MEMFS From 0ed9b503cbfc0311cd53d4399fb33a038eb2c4c9 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 22 Nov 2022 15:12:02 +0000 Subject: [PATCH 3/7] ECC-1462, ECC-1449, ECC-1448 --- definitions/grib2/cfVarName.def | 66 +++++++++++++++++++++ definitions/grib2/name.def | 66 +++++++++++++++++++++ definitions/grib2/paramId.def | 66 +++++++++++++++++++++ definitions/grib2/shortName.def | 66 +++++++++++++++++++++ definitions/grib2/template.4.horizontal.def | 3 +- definitions/grib2/units.def | 66 +++++++++++++++++++++ definitions/mars/grib.mmsf.fc.def | 5 +- 7 files changed, 336 insertions(+), 2 deletions(-) diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def index ab93cb803..ddf1413f0 100644 --- a/definitions/grib2/cfVarName.def +++ b/definitions/grib2/cfVarName.def @@ -2199,6 +2199,72 @@ typeOfFirstFixedSurface = 103 ; scaleFactorOfFirstFixedSurface = 0 ; } +#Urban cover +'cur' = { + discipline = 2 ; + parameterCategory = 6 ; + parameterNumber = 0 ; + } +#Road Cover +'cro' = { + discipline = 2 ; + parameterCategory = 6 ; + parameterNumber = 1 ; + } +#Building cover +'cbu' = { + discipline = 2 ; + parameterCategory = 6 ; + parameterNumber = 2 ; + } +#Building height +'bldh' = { + discipline = 2 ; + parameterCategory = 6 ; + parameterNumber = 3 ; + } +#Vertical-to-horizontal area ratio +'hwr' = { + discipline = 2 ; + parameterCategory = 6 ; + parameterNumber = 4 ; + } +#Standard deviation of building height +'bhstd' = { + discipline = 2 ; + parameterCategory = 6 ; + parameterNumber = 5 ; + } +#Wetland cover +'cwe' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 45 ; + } +#Wetland type +'twe' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 46 ; + } +#Irrigation cover +'cirr' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 47 ; + } +#C4 crop cover +'c4cr' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 48 ; + } +#C4 grass cover +'c4gr' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 49 ; + } #Mean temperature tendency due to short-wave radiation 'mttswr' = { discipline = 0 ; diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index a98012218..726fbba69 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -2199,6 +2199,72 @@ scaledValueOfFirstFixedSurface = 100 ; scaleFactorOfFirstFixedSurface = 0 ; } +#Urban cover +'Urban cover' = { + discipline = 2 ; + parameterCategory = 6 ; + parameterNumber = 0 ; + } +#Road Cover +'Road Cover' = { + discipline = 2 ; + parameterCategory = 6 ; + parameterNumber = 1 ; + } +#Building cover +'Building cover' = { + discipline = 2 ; + parameterCategory = 6 ; + parameterNumber = 2 ; + } +#Building height +'Building height' = { + discipline = 2 ; + parameterCategory = 6 ; + parameterNumber = 3 ; + } +#Vertical-to-horizontal area ratio +'Vertical-to-horizontal area ratio' = { + discipline = 2 ; + parameterCategory = 6 ; + parameterNumber = 4 ; + } +#Standard deviation of building height +'Standard deviation of building height' = { + discipline = 2 ; + parameterCategory = 6 ; + parameterNumber = 5 ; + } +#Wetland cover +'Wetland cover' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 45 ; + } +#Wetland type +'Wetland type' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 46 ; + } +#Irrigation cover +'Irrigation cover' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 47 ; + } +#C4 crop cover +'C4 crop cover' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 48 ; + } +#C4 grass cover +'C4 grass cover' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 49 ; + } #Mean temperature tendency due to short-wave radiation 'Mean temperature tendency due to short-wave radiation' = { discipline = 0 ; diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index ddffa4448..8b5a0ed40 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -2199,6 +2199,72 @@ scaledValueOfFirstFixedSurface = 100 ; scaleFactorOfFirstFixedSurface = 0 ; } +#Urban cover +'229001' = { + discipline = 2 ; + parameterCategory = 6 ; + parameterNumber = 0 ; + } +#Road Cover +'229002' = { + discipline = 2 ; + parameterCategory = 6 ; + parameterNumber = 1 ; + } +#Building cover +'229003' = { + discipline = 2 ; + parameterCategory = 6 ; + parameterNumber = 2 ; + } +#Building height +'229004' = { + discipline = 2 ; + parameterCategory = 6 ; + parameterNumber = 3 ; + } +#Vertical-to-horizontal area ratio +'229005' = { + discipline = 2 ; + parameterCategory = 6 ; + parameterNumber = 4 ; + } +#Standard deviation of building height +'229006' = { + discipline = 2 ; + parameterCategory = 6 ; + parameterNumber = 5 ; + } +#Wetland cover +'229007' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 45 ; + } +#Wetland type +'229008' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 46 ; + } +#Irrigation cover +'229009' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 47 ; + } +#C4 crop cover +'229010' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 48 ; + } +#C4 grass cover +'229011' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 49 ; + } #Mean temperature tendency due to short-wave radiation '235001' = { discipline = 0 ; diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index 4c7702fff..1982a740f 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -2199,6 +2199,72 @@ scaledValueOfFirstFixedSurface = 100 ; scaleFactorOfFirstFixedSurface = 0 ; } +#Urban cover +'cur' = { + discipline = 2 ; + parameterCategory = 6 ; + parameterNumber = 0 ; + } +#Road Cover +'cro' = { + discipline = 2 ; + parameterCategory = 6 ; + parameterNumber = 1 ; + } +#Building cover +'cbu' = { + discipline = 2 ; + parameterCategory = 6 ; + parameterNumber = 2 ; + } +#Building height +'bldh' = { + discipline = 2 ; + parameterCategory = 6 ; + parameterNumber = 3 ; + } +#Vertical-to-horizontal area ratio +'hwr' = { + discipline = 2 ; + parameterCategory = 6 ; + parameterNumber = 4 ; + } +#Standard deviation of building height +'bhstd' = { + discipline = 2 ; + parameterCategory = 6 ; + parameterNumber = 5 ; + } +#Wetland cover +'cwe' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 45 ; + } +#Wetland type +'twe' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 46 ; + } +#Irrigation cover +'cirr' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 47 ; + } +#C4 crop cover +'c4cr' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 48 ; + } +#C4 grass cover +'c4gr' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 49 ; + } #Mean temperature tendency due to short-wave radiation 'mttswr' = { discipline = 0 ; diff --git a/definitions/grib2/template.4.horizontal.def b/definitions/grib2/template.4.horizontal.def index 5f1c61f85..3749b84b4 100755 --- a/definitions/grib2/template.4.horizontal.def +++ b/definitions/grib2/template.4.horizontal.def @@ -82,9 +82,10 @@ if (extraDim) { } } -# See ECC-854, ECC-1435, ECC-1451 +# See ECC-854, ECC-1435, ECC-1451, ECC-1462 if( (typeOfFirstFixedSurface == 151 && typeOfSecondFixedSurface == 151) || (typeOfFirstFixedSurface == 152 && typeOfSecondFixedSurface == 152) || + (typeOfFirstFixedSurface == 168 && typeOfSecondFixedSurface == 168) || (typeOfFirstFixedSurface == 114 && typeOfSecondFixedSurface == 114) ) { alias mars.levelist = bottomLevel; alias ls.level = bottomLevel; diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index 987dcf86d..04b39e072 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -2199,6 +2199,72 @@ scaledValueOfFirstFixedSurface = 100 ; scaleFactorOfFirstFixedSurface = 0 ; } +#Urban cover +'(0 - 1)' = { + discipline = 2 ; + parameterCategory = 6 ; + parameterNumber = 0 ; + } +#Road Cover +'(0 - 1)' = { + discipline = 2 ; + parameterCategory = 6 ; + parameterNumber = 1 ; + } +#Building cover +'(0 - 1)' = { + discipline = 2 ; + parameterCategory = 6 ; + parameterNumber = 2 ; + } +#Building height +'m' = { + discipline = 2 ; + parameterCategory = 6 ; + parameterNumber = 3 ; + } +#Vertical-to-horizontal area ratio +'m**2 m**-2' = { + discipline = 2 ; + parameterCategory = 6 ; + parameterNumber = 4 ; + } +#Standard deviation of building height +'m' = { + discipline = 2 ; + parameterCategory = 6 ; + parameterNumber = 5 ; + } +#Wetland cover +'(0 - 1)' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 45 ; + } +#Wetland type +'Code table 4.239' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 46 ; + } +#Irrigation cover +'(0 - 1)' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 47 ; + } +#C4 crop cover +'(0 - 1)' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 48 ; + } +#C4 grass cover +'(0 - 1)' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 49 ; + } #Mean temperature tendency due to short-wave radiation 'K s**-1' = { discipline = 0 ; diff --git a/definitions/mars/grib.mmsf.fc.def b/definitions/mars/grib.mmsf.fc.def index 3dc2f9a36..9d47177d1 100644 --- a/definitions/mars/grib.mmsf.fc.def +++ b/definitions/mars/grib.mmsf.fc.def @@ -5,7 +5,10 @@ if (class is "en") { alias mars.system = systemNumber; } if (class is "c3") { alias mars.system = systemNumber; } alias mars.number = perturbationNumber; alias mars.method = methodNumber; -alias mars.origin = centre; + +if (!(class is "gw")) { # ECC-1448 + alias mars.origin = centre; +} # See ECC-624 if (centre == 80 && subCentre == 98 && class is "c3") { From 5e34bfbc0466bc5babc682af981ccb80049ce050 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 22 Nov 2022 15:43:15 +0000 Subject: [PATCH 4/7] ECC-1456: MARS: Create 2 new classes EF (for EFAS) and GF (for GLOFAS) --- definitions/mars/class.table | 2 ++ 1 file changed, 2 insertions(+) diff --git a/definitions/mars/class.table b/definitions/mars/class.table index 3dcfe05d2..446f13833 100644 --- a/definitions/mars/class.table +++ b/definitions/mars/class.table @@ -40,6 +40,8 @@ 39 gw Global Wildfire Information System 40 e6 ERA6 41 l6 ERA6/LAND +42 ef EFAS (European flood awareness system) +43 gf GLOFAS (Global flood awareness system) 99 te Test 100 at Austria 101 be Belgium From 8eaa1631fc3872674977263d5cc2d4bfdd5eae15 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 25 Nov 2022 14:48:24 +0000 Subject: [PATCH 5/7] ECC-1475: Check return size of md5 keys --- src/grib_accessor_class_md5.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/grib_accessor_class_md5.c b/src/grib_accessor_class_md5.c index ed5474be5..14f2f9bc5 100644 --- a/src/grib_accessor_class_md5.c +++ b/src/grib_accessor_class_md5.c @@ -271,6 +271,6 @@ static void destroy(grib_context* c, grib_accessor* a) static int value_count(grib_accessor* a, long* count) { - *count = 16; + *count = 1; /* ECC-1475 */ return 0; } From 3fb11b3348b236ff7ee7dad43f98df304e9eb842 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Mon, 28 Nov 2022 18:17:03 +0000 Subject: [PATCH 6/7] ECC-1477: Compilation fails with libjasper v4.x.x --- src/grib_jasper_encoding.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/grib_jasper_encoding.c b/src/grib_jasper_encoding.c index fe8facf92..d51c57147 100644 --- a/src/grib_jasper_encoding.c +++ b/src/grib_jasper_encoding.c @@ -22,7 +22,7 @@ static int ecc_jasper_initialise() { -#if JASPER_VERSION_MAJOR == 3 +#if JASPER_VERSION_MAJOR >= 3 int jaserr = 0; jas_conf_clear(); jas_conf_set_max_mem_usage(jas_get_total_mem_size()); @@ -36,7 +36,7 @@ static int ecc_jasper_initialise() static jas_image_t* ecc_jasper_decode(jas_stream_t *in) { -#if JASPER_VERSION_MAJOR == 3 +#if JASPER_VERSION_MAJOR >= 3 /* Second argument (=fmt) < 0 means "If possible, try to determine the format of the input data" */ return jas_image_decode(in, -1, 0); #else @@ -46,7 +46,7 @@ static jas_image_t* ecc_jasper_decode(jas_stream_t *in) static int ecc_jasper_encode(jas_image_t *image, jas_stream_t *jpcstream, char *optstr) { -#if JASPER_VERSION_MAJOR == 3 +#if JASPER_VERSION_MAJOR >= 3 const int fmt = jas_image_strtofmt("jpc"); return jas_image_encode(image, jpcstream, fmt, optstr); #else @@ -56,7 +56,7 @@ static int ecc_jasper_encode(jas_image_t *image, jas_stream_t *jpcstream, char * static void ecc_jasper_cleanup() { -#if JASPER_VERSION_MAJOR == 3 +#if JASPER_VERSION_MAJOR >= 3 jas_cleanup_thread(); jas_cleanup_library(); #endif From f5e24997764e32efb8659cf2b5ba77ec2ba008ec Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 30 Nov 2022 14:23:45 +0000 Subject: [PATCH 7/7] ECC-1484: GRIB: New MARS class for Greenhouse gases dataset --- definitions/mars/class.table | 1 + 1 file changed, 1 insertion(+) diff --git a/definitions/mars/class.table b/definitions/mars/class.table index 446f13833..516e43217 100644 --- a/definitions/mars/class.table +++ b/definitions/mars/class.table @@ -42,6 +42,7 @@ 41 l6 ERA6/LAND 42 ef EFAS (European flood awareness system) 43 gf GLOFAS (Global flood awareness system) +44 gg Greenhouse Gases 99 te Test 100 at Austria 101 be Belgium